Linking errors with prebuild libs on Linux

I can also happily report that the newest commits fixed the failure to build on latest version of Manjaro xfce. Good job guys :slight_smile:

I can now build but I seem to have come across an error when trying to run blender:

Error: GLEW version 2.0 and above is required.

I have attempted to build with WITH_SYSTEM_GLEW set to ON and OFF in the CMakeCache.txt file but that doesn’t seem to work. I have both glew 2.10 and glew-devel 2.10 on my system? I think it might be just a small issue on my part.

This probably happens when Blender was compiled with WITH_SYSTEM_GLEW set to ON at some point (maybe a lite build?). Then even if you change it to OFF, the GLEW library may still be configured to use one from the system that is outdated.

For this you can make a completely new build (removing the build folder) which will default to WITH_SYSTEM_GLEW OFF, or remove GLEW_LIBRARY from the CMakeCache.txt

thank you and all Blender developers to fix this, now i can newly make my full static compiled Blender from Centos7 running on OpenSUSE

:beers:

Just to see if I understood correctly. If we want to share our builds with other users, is it best to build with WITH_SYSTEM_GLEW=OFF?

Another question. When you do:

cmake . -C '/PATH_TO/blender/build_files/buildbot/config/blender_linux.cmake'

This does not yet enable “WITH_STATIC_LIBS”. Is it necessary to set “WITH_STATIC_LIBS=ON” if we want to share our builds with others? Or if we have CentOS “lib” folder it will create a build with static libraries anyway?

All WITH_SYSTEM_* options should be OFF for static builds.

WITH_STATIC_LIBS should be ON, this is done automatically if you use the centos7 lib folder.

1 Like

Hello, me again.
When you run “install_deps.sh”, when finished it indicates a long string of instructions to build Blender. I use that long command to build with my own system dependencies and the dependencies that install_deps.sh script build in “/opt”. But if you have “lib” folder with precompiled libraries and you try to build Blender with instruction that install_deps.sh script shows at the end, then you get an error when build is finished and it tries to link libraries.
Since I am assuming that when you try to build with instructions that install_deps.sh shows at the end, you want to compile with system libraries and those in /opt folder, would it be possible to add to instructions that install_deps.sh scriprt shows at the end some instruction that avoids the lib folder with precompiled library if they are present?

Dear all.

Today (2020-05-10), I have tried to build Blender from scratch. I use this documentation and use pre-compiled libraries. All files were downloaded today. The built directory is not in the home directory but in some other location of the hard disk. OS: Lubuntu 18.04 64Bit.
Note that I had a built before in the home directory but I deleted it at the very beginning (before new Blender built) due to not enough disk space in home.

Anyway, everything works well despite the linking: during linking I get a similar error message as shown in the first message of this thread, see below. I attach the CMakeCache.txt file, which I did not modify.

Any ideas?

[100%] Linking CXX executable ../../bin/blender
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exrinput.cpp.o):exrinput.cpp:function OpenImageIO_v1_8::OpenEXRInput::PartInfo::parse_header(OpenImageIO_v1_8::OpenEXRInput*, Imf_2_4::Header const*): Fehler: undefined reference to 'Imf_2_4::Header::type() const'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exrinput.cpp.o):exrinput.cpp:function OpenImageIO_v1_8::OpenEXRInput::PartInfo::parse_header(OpenImageIO_v1_8::OpenEXRInput*, Imf_2_4::Header const*): Fehler: undefined reference to 'Imf_2_4::Header::type() const'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exrinput.cpp.o):exrinput.cpp:function OpenImageIO_v1_8::OpenEXRInput::PartInfo::parse_header(OpenImageIO_v1_8::OpenEXRInput*, Imf_2_4::Header const*): Fehler: undefined reference to 'Imf_2_4::Header::name() const'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:function OpenImageIO_v1_8::OpenEXROutput::open(std::string const&, int, OpenImageIO_v1_8::ImageSpec const*): Fehler: undefined reference to 'Imf_2_4::Header::setType(std::string const&)'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:function Imf_2_4::TypedAttribute<std::string>::typeName() const: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::string>::staticTypeName()'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:function Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >::typeName() const: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >::staticTypeName()'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:vtable for Imf_2_4::TypedAttribute<std::string>: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::string>::writeValueTo(Imf_2_4::OStream&, int) const'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:vtable for Imf_2_4::TypedAttribute<std::string>: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::string>::readValueFrom(Imf_2_4::IStream&, int, int)'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:vtable for Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >::writeValueTo(Imf_2_4::OStream&, int) const'
/media/cle/Daten/Programs/Blender/blender-git/lib/linux_centos7_x86_64/openimageio/lib/libOpenImageIO.a(exroutput.cpp.o):exroutput.cpp:vtable for Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >: Fehler: undefined reference to 'Imf_2_4::TypedAttribute<std::vector<std::string, std::allocator<std::string> > >::readValueFrom(Imf_2_4::IStream&, int, int)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exr_add_channel: Fehler: undefined reference to 'Imf_2_4::insertViewName(std::string const&, std::vector<std::string, std::allocator<std::string> > const&, int)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exr_channel_rect: Fehler: undefined reference to 'Imf_2_4::insertViewName(std::string const&, std::vector<std::string, std::allocator<std::string> > const&, int)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exrtile_write_channels: Fehler: undefined reference to 'Imf_2_4::FrameBuffer::insert(std::string const&, Imf_2_4::Slice const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exr_read_channels: Fehler: undefined reference to 'Imf_2_4::FrameBuffer::insert(std::string const&, Imf_2_4::Slice const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function imb_exr_get_views: Fehler: undefined reference to 'Imf_2_4::Header::view() const'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function imb_exr_get_views: Fehler: undefined reference to 'Imf_2_4::multiView(Imf_2_4::Header const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exrtile_begin_write: Fehler: undefined reference to 'Imf_2_4::Header::setType(std::string const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exrtile_begin_write: Fehler: undefined reference to 'Imf_2_4::Header::setView(std::string const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exrtile_begin_write: Fehler: undefined reference to 'Imf_2_4::Header::setName(std::string const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exrtile_begin_write: Fehler: undefined reference to 'Imf_2_4::ChannelList::insert(std::string const&, Imf_2_4::Channel const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exr_begin_write: Fehler: undefined reference to 'Imf_2_4::ChannelList::layers(std::set<std::string, std::less<std::string>, std::allocator<std::string> >&) const'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function IMB_exr_begin_write: Fehler: undefined reference to 'Imf_2_4::addMultiView(Imf_2_4::Header&, std::vector<std::string, std::allocator<std::string> > const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function imb_exr_is_multi: Fehler: undefined reference to 'Imf_2_4::ChannelList::layers(std::set<std::string, std::less<std::string>, std::allocator<std::string> >&) const'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function void Imf_2_4::GetChannelsInMultiPartFile<std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> > >(Imf_2_4::MultiPartInputFile const&, std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> >&): Fehler: undefined reference to 'Imf_2_4::Header::view() const'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function void Imf_2_4::GetChannelsInMultiPartFile<std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> > >(Imf_2_4::MultiPartInputFile const&, std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> >&): Fehler: undefined reference to 'Imf_2_4::viewFromChannelName(std::string const&, std::vector<std::string, std::allocator<std::string> > const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function void Imf_2_4::GetChannelsInMultiPartFile<std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> > >(Imf_2_4::MultiPartInputFile const&, std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> >&): Fehler: undefined reference to 'Imf_2_4::removeViewName(std::string const&, std::string const&)'
../../lib/libbf_imbuf_openexr.a(openexr_api.cpp.o):openexr_api.cpp:function void Imf_2_4::GetChannelsInMultiPartFile<std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> > >(Imf_2_4::MultiPartInputFile const&, std::vector<Imf_2_4::MultiViewChannelName, std::allocator<Imf_2_4::MultiViewChannelName> >&): Fehler: undefined reference to 'Imf_2_4::multiView(Imf_2_4::Header const&)'
collect2: error: ld returned 1 exit status
source/creator/CMakeFiles/blender.dir/build.make:513: recipe for target 'bin/blender' failed
make[3]: *** [bin/blender] Error 1
CMakeFiles/Makefile2:8117: recipe for target 'source/creator/CMakeFiles/blender.dir/all' failed
make[2]: *** [source/creator/CMakeFiles/blender.dir/all] Error 2
Makefile:162: recipe for target 'all' failed
make[1]: *** [all] Error 2
GNUmakefile:299: recipe for target 'all' failed
make: *** [all] Error 2

Output.txt (8.3 KB)
CMakeCache.txt (124.9 KB)

EDIT
In CMakeCache.txt I find:

  1. WITH_STATIC_LIBS:BOOL=OFF
  2. WITH_SYSTEM_GLES:BOOL=ON
  3. All other WITH_SYSTEM_* are off

This may be fixed by:
https://developer.blender.org/rB80953aed333051f7d2b319e3e087add7a2800956

You’d need to remove CMakeCache.txt and build again for this fix to work and find the correct libraries.

What would also help is to remove /opt/lib/openexr, those are libraries from install_deps which are being picked up when they shouldn’t be used together with precompiled libraries.

Dear brecht,

thanks a lot!

This helped indeed! I still had this /opt/lib/openexr link and related directory from an older install. I entirely removed it. Then, I removed CMakeCache.txt and started make. It worked at once!

Hi, the update fix most problem for me, too.
What I`ve done so far:
Delete build directory
Install missing package libxxf86vm (still missing openMP)
Make

[100%] Linking CXX executable ../../bin/blender
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: warning: libtbb.so.2, needed by /home/pepo/blender-git/lib/linux_centos7_x86_64/open
imagedenoise/lib/libOpenImageDenoise.a, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: warning: libtbbmalloc.so.2, needed by /home/pepo/blender-git/lib/linux_centos7_x86_6
4/openimagedenoise/lib/libOpenImageDenoise.a, not found (try using -rpath or -rpath-link)
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: ../../bin/blender: local symbol `_ZNK3tbb8internal32allocate_root_with_context_proxy
4freeERNS_4taskE' in /home/pepo/blender-git/lib/linux_centos7_x86_64/tbb/lib/libtbb.a(task.cpp.o) is referenced by DSO
/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: final link failed: bad value
collect2: Fehler: ld gab 1 als Ende-Status zurĂźck
make[3]: *** [source/creator/CMakeFiles/blender.dir/build.make:488: bin/blender] Fehler 1
make[2]: *** [CMakeFiles/Makefile2:6889: source/creator/CMakeFiles/blender.dir/all] Fehler 2
make[1]: *** [Makefile:183: all] Fehler 2
make: *** [GNUmakefile:304: all] Fehler 2

CMakeCache.txt (109.7 KB)

No /opt/lib
Cross post Unable to build blender 2.90 on Linux Mint

Thank you

I’m having almost the same errors too (on Fedora 32, Xfce spin).

Scanning dependencies of target bf_intern_locale
[  4%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_md5.cpp.o
[  4%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_murmurhash.cpp.o
[  4%] Building CXX object intern/locale/CMakeFiles/bf_intern_locale.dir/boost_locale_wrapper.cpp.o
[  4%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_path.cpp.o
[  5%] Linking CXX static library ../../lib/libbf_intern_locale.a
c++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[3]: *** [intern/libmv/CMakeFiles/bf_intern_libmv.dir/build.make:499: intern/libmv/CMakeFiles/bf_intern_libmv.dir/libmv/simple_pipeline/intersect.cc.o] Error 1
make[3]: *** Deleting file 'intern/libmv/CMakeFiles/bf_intern_libmv.dir/libmv/simple_pipeline/intersect.cc.o'
make[3]: *** Waiting for unfinished jobs....
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_profiling.cpp.o
make[2]: *** [CMakeFiles/Makefile2:3241: intern/libmv/CMakeFiles/bf_intern_libmv.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_string.cpp.o
Scanning dependencies of target bf_intern_rigidbody
[  5%] Building CXX object intern/rigidbody/CMakeFiles/bf_intern_rigidbody.dir/rb_bullet_api.cpp.o
[  5%] Built target bf_intern_locale
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_simd.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_system.cpp.o
[  5%] Linking CXX static library ../../lib/libbf_intern_rigidbody.a
[  5%] Built target bf_intern_rigidbody
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_task.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_thread.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_time.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_transform.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_windows.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_guarded_allocator.cpp.o
[  5%] Building CXX object intern/cycles/util/CMakeFiles/cycles_util.dir/util_sky_model.cpp.o
[  5%] Linking CXX static library ../../../lib/libcycles_util.a
[  5%] Built target cycles_util
make[1]: *** [Makefile:183: all] Error 2
make: *** [GNUmakefile:304: all] Error 2

This is my CMakeCache.txt, if it helps somehow.
CMakeCache.txt (116.1 KB)

I’m really sorry if I’m copy-pasting irrelevant stuff, I’ve never compiled software from sources before.