raisimTech / raisimLib

Visit www.raisim.com
http://www.raisim.com
Other
341 stars 91 forks source link

Error building on linux with "undefined reference to `log@GLIBC_2.29" #435

Open thomasbbrunner opened 1 year ago

thomasbbrunner commented 1 year ago

Hi, I am currently trying to build the latest version of raisimLib and am getting the error shown below.

I am guessing this is because of the gcc or ld version, which is a bit dated in the system I am compilling. Can you tell me exactly what is the minimum supported version?

[  5%] Linking CXX executable speed_test
[  7%] Linking CXX executable laikago
[  8%] Linking CXX executable meshes
[  9%] Linking CXX executable primitives
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `log@GLIBC_2.29'
<dir>/raisimLib/raisim/linux/lib/libraisimMine.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `exp@GLIBC_2.29'
collect2: error: ld returned 1 exit status
make[2]: *** [examples/CMakeFiles/speed_test.dir/build.make:102: examples/speed_test] Error 1
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `log@GLIBC_2.29'
<dir>/raisimLib/raisim/linux/lib/libraisimMine.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `exp@GLIBC_2.29'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/Makefile2:204: examples/CMakeFiles/speed_test.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** [examples/CMakeFiles/meshes.dir/build.make:102: examples/meshes] Error 1
make[1]: *** [CMakeFiles/Makefile2:256: examples/CMakeFiles/meshes.dir/all] Error 2
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `log@GLIBC_2.29'
<dir>/raisimLib/raisim/linux/lib/libraisimMine.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `exp@GLIBC_2.29'
collect2: error: ld returned 1 exit status
make[2]: *** [examples/CMakeFiles/laikago.dir/build.make:102: examples/laikago] Error 1
make[1]: *** [CMakeFiles/Makefile2:282: examples/CMakeFiles/laikago.dir/all] Error 2
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `log@GLIBC_2.29'
<dir>/raisimLib/raisim/linux/lib/libraisimMine.so: undefined reference to `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, std::allocator<char> >::basic_ostringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()@GLIBCXX_3.4.26'
<dir>/raisimLib/raisim/linux/lib/libraisim.so.1.1.6: undefined reference to `exp@GLIBC_2.29'
collect2: error: ld returned 1 exit status
make[2]: *** [examples/CMakeFiles/primitives.dir/build.make:102: examples/primitives] Error 1
make[1]: *** [CMakeFiles/Makefile2:230: examples/CMakeFiles/primitives.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
thomasbbrunner commented 1 year ago

Using git bisect I identified the commit that broke the compilation for me (I was using an older version of raisimLib).

The commit hash is: 3a8adc227e00cc17d7d3c90e98d46df440a013d9

jhwangbo commented 1 year ago

Sorry for my late response. Do you use Ubuntu 18.04? We only support 20.04 or above.

jhwangbo commented 1 year ago

ubuntu 20.04 should support glibc 2.31 and below

thomasbbrunner commented 1 year ago

Thanks for the information!

I'm compiling it directly on the ETH Euler cluster, which unfortunately is stuck with an older libc version.

I was able to get around this issue by using the last commit before the libc version requirements changed (see my previous comment).

The problem here are the precompiled libraisim binaries. It would be nice if you could also provide versions of them for older OS. Or if I could compile them myself using a different libc version.

jhwangbo commented 1 year ago

I dropped 18.04 support because vulkan doesn't support it anymore. This will create alot of confusion for people using raisim visualizers. I haven't tried it, but one way around it is by providing new shared libraries.

thomasbbrunner commented 1 year ago

I see. I will then keep using libraisim version v1.1.5, which still works. I also looked into compiling against an older version of libc, but that seems very hard to do.

I guess that's all there is to do until Euler gets a libc upgrade.