Blender 2.91 master fails on Debian Linux

I’m trying to build Blender for the first time (head of master), but I’m getting the failure below when I run make:

[100%] Linking CXX executable ../../bin/blender
../../lib/libbf_intern_eigen.a(linear_solver.cc.o):linear_solver.cc:function 
Eigen::internal::sparse_time_dense_product_impl<Eigen::Transpose<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, double, 1, true>::run(Eigen::Transpose<Eigen::SparseMatrix<double, 0, int> > const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, Eigen::Matrix<double, -1, 1, 0, -1, 1>&, double const&) [clone ._omp_fn.0]: error: undefined reference to 'GOMP_loop_nonmonotonic_dynamic_start'
../../lib/libbf_intern_eigen.a(linear_solver.cc.o):linear_solver.cc:function 
Eigen::internal::sparse_time_dense_product_impl<Eigen::Transpose<Eigen::SparseMatrix<double, 0, int> >, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, double, 1, true>::run(Eigen::Transpose<Eigen::SparseMatrix<double, 0, int> > const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&, Eigen::Matrix<double, -1, 1, 0, -1, 1>&, double const&) [clone ._omp_fn.0]: error: undefined reference to 'GOMP_loop_nonmonotonic_dynamic_next'
collect2: error: ld returned 1 exit status
make[2]: *** [source/creator/CMakeFiles/blender.dir/build.make:375: bin/blender] Error 1

I’m running Debian testing (to be bullseye), and installed all compiled dependencies to /opt, then ran cmake -U *SNDFILE* -U PYTHON* -U *BOOST* -U *Boost* -U *TBB* -U *OPENCOLORIO* -U *OPENEXR* -U *OPENIMAGEIO* -U *LLVM* -U *CYCLES* -U *OPENSUBDIV* -U *OPENVDB* -U *BLOSC* -U *COLLADA* -U *FFMPEG* -U *ALEMBIC* -U *USD* -U *EMBREE* -U *OPENIMAGEDENOISE* -U *OPENXR* -D WITH_CODEC_SNDFILE=ON -D PYTHON_VERSION=3.8 -D WITH_OPENCOLORIO=ON -D WITH_CYCLES_OSL=ON -D WITH_LLVM=ON -D LLVM_VERSION=9.0 -D OSL_ROOT_DIR=/opt/lib/osl -D WITH_OPENSUBDIV=ON -D OPENSUBDIV_ROOT_DIR=/opt/lib/osd -D WITH_OPENVDB=ON -D WITH_OPENVDB_BLOSC=ON -D WITH_ALEMBIC=ON -D ALEMBIC_ROOT_DIR=/opt/lib/alembic -D WITH_USD=ON -D USD_ROOT_DIR=/opt/lib/usd -D WITH_CODEC_FFMPEG=ON -D FFMPEG_LIBRARIES='avformat;avcodec;avutil;avdevice;swscale;swresample;lzma;rt;theora;theoradec;theoraenc;vorbis;vorbisenc;vorbisfile;ogg;x264;openjp2' -D WITH_XR_OPENXR=ON -D XR_OPENXR_SDK_ROOT_DIR=/opt/lib/xr-openxr-sdk ../blender/

I am sure you not follow official documents wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro

@NiCapp I decided to go with https://wiki.blender.org/wiki/Building_Blender/Linux/Generic_Distro#Automatic_Dependency_Installation to build the shared libraries in /opt/. I used the install_deps.sh to build the dependencies and followed the instructions it emitted.

The easiest and recommended way to build Blender is to use the pre-built libraries for your platform.
Also it seems OpenMP is required for Eigen.

1 Like

Hello
Try Gentoo distro, there is much easy way to build git’s blender
There is my overlay for gentoo’s blender packages

1 Like

This did the trick. Thanks!

For anyone wondering: this issue comes from an incompatibility between gcc and llvm. From what I understand, llvm implements its own version of OpenMP (or some sort of intermediate layer), replacing gcc’s implementation by overriding the symbols. The missing symbols in the error message are part of a later version of GNU OpenMP. Current gcc requires them, but llvm didn’t provide them until version 10 it seems.

Default llvm in Debian (current stable and sid) is version 9. Compiling with llvm 10 (package llvm-10-dev) solves the issue. To do that, run cmake with those flags: -D LLVM_VERSION=10.0.1 -D LLVM_CONFIG=/usr/bin/llvm-config-10

Just wanted to share it since it took me a fair amount of time to track this out. Even though I could have used the pre-built binaries… But I can’t resist a riddle.