You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境编译Blender遇类型转换错误求助(49%失败)

Blender Ubuntu编译报错(49%进度)

问题背景

按照Blender官方Ubuntu编译指南操作,编译到49%时失败,已更新Python和gcc,作为Ubuntu新手寻求解决办法。

错误日志

/home/istmadmin/blender-git/blender/source/blender/blenlib/intern/index_mask.cc: In function ‘void blender::index_mask::inverted_indices_to_segments(blender::index_mask::IndexMaskSegment, blender::LinearAllocator<>&, blender::Vector<blender::OffsetSpan<long int, short int>, 16>&)’:
/home/istmadmin/blender-git/blender/source/blender/blenlib/intern/index_mask.cc:384:60: error: conversion from ‘int’ to ‘int16_t’ {aka ‘short int’} may change value [-Werror=conversion]
  384 |     const int16_t gap_first = indices[size_before_gap - 1] + 1;
/home/istmadmin/blender-git/blender/source/blender/blenlib/intern/index_mask.cc:386:35: error: conversion from ‘int’ to ‘int16_t’ {aka ‘short int’} may change value [-Werror=conversion]
  386 |     const int16_t gap_size = next - gap_first;
      |                              ~~^~~~
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_3_4.cc.o
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-stringop-overread’
cc1plus: some warnings being treated as errors
make[3]: * [source/blender/blenlib/CMakeFiles/bf_blenlib.dir/build.make:817: source/blender/blenlib/CMakeFiles/bf_blenlib.dir/intern/index_mask.cc.o] Error 1
make[2]: * [CMakeFiles/Makefile2:6442: source/blender/blenlib/CMakeFiles/bf_blenlib.dir/all] Error 2
make[2]: * Waiting for unfinished jobs....
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_3_6.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_3_9.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_3_d.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_3.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_4.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_6.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_8.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_9.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_4_d.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_2_d_d.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_3_3_3.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_4_4_2.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_4_4_3.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_4_4_4.cc.o
[ 49%] Building CXX object extern/ceres/CMakeFiles/extern_ceres.dir/internal/ceres/generated/schur_eliminator_4_4_d.cc.o
[ 49%] Linking CXX static library ../../lib/libextern_ceres.a
[ 49%] Built target extern_ceres
make[1]: * [Makefile:163: all] Error 2
make: * [GNUmakefile:368: all] Error 2

解决方法

  • 临时绕过编译警告:在CMake配置阶段添加参数,关闭类型转换警告作为错误。执行以下命令:
    cmake -DCMAKE_CXX_FLAGS="-Wno-error=conversion" ../blender
    
    随后重新启动编译:
    make -j$(nproc)
    
  • 修复源码类型转换:直接修改报错的源码行,添加显式类型转换:
    1. 打开报错文件:
      nano /home/istmadmin/blender-git/blender/source/blender/blenlib/intern/index_mask.cc
      
    2. 将第384行修改为:
      const int16_t gap_first = static_cast<int16_t>(indices[size_before_gap - 1] + 1);
      
    3. 将第386行修改为:
      const int16_t gap_size = static_cast<int16_t>(next - gap_first);
      
    4. 保存文件后重新编译。
  • 检查gcc版本兼容性:确认gcc版本在Blender官方支持范围内,若当前版本过高,可尝试降级到官方推荐版本(如gcc 11或12)。

内容的提问来源于Stack Exchange,提问作者Samet Kocbay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 05:55:01