grasph/wrapit

Build error: undefined reference to symbol `SmallVectorBase`

Closed this issue · 3 comments

Hello,

Previously I was able to build wrapit on my macbook, but I got an error when trying to build on a remote cluster (linux CentOS with cmake/3.24.2, gcc/12.1.0, llvm/15.0.3 modules loaded).

Can you suggest me what I should do? Below is my full command

$ git clone https://github.com/grasph/wrapit
$ cd wrapit/
$ mkdir build && cd build
$ cmake ..
-- The C compiler identification is GNU 12.1.0
-- The CXX compiler identification is GNU 12.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /share/software/user/open/gcc/12.1.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /share/software/user/open/gcc/12.1.0/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "1.8.3.1") 
-- Could NOT find Terminfo (missing: Terminfo_LIBRARIES Terminfo_LINKABLE) 
-- Found ZLIB: /usr/lib64/libz.so (found version "1.2.7") 
-- Could NOT find LibXml2 (missing: LIBXML2_LIBRARY LIBXML2_INCLUDE_DIR) 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/groups/sabatti/.julia/dev/wrapit/build

$ make -j4
[  0%] Built target version
[ 22%] Building CXX object CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o
[ 22%] Building CXX object CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o
[ 44%] Building CXX object CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o
[ 44%] Building CXX object CMakeFiles/wrapit.dir/src/utils.cpp.o
[ 55%] Building CXX object CMakeFiles/wrapit.dir/src/CodeTree.cpp.o
[ 66%] Building CXX object CMakeFiles/wrapit.dir/src/main.cpp.o
[ 77%] Building CXX object CMakeFiles/wrapit.dir/version.cpp.o
[ 88%] Linking CXX executable wrapit
/usr/bin/ld: CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o: undefined reference to symbol '_ZN4llvm15SmallVectorBaseIjE8grow_podEPvmm'
/share/software/user/open/llvm/15.0.3/lib/libLLVMSupport.so.15: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [wrapit] Error 1
make[1]: *** [CMakeFiles/wrapit.dir/all] Error 2
make: *** [all] Error 2

This post seems to throw a similar error, but the suggestion of changing

target_link_libraries(wrapit PRIVATE libclang clangAST cxxopts)

to

target_link_libraries(wrapit PUBLIC libclang clangAST cxxopts)

in wrapit/CMakeLists.txt did not work.

grasph commented

It looks like linked to your LLVM installation. Indeed, but default LLVMSupport is a static library while your error message refers to a shared library.

Adding VERBOSE=1 to you make command line will give more insights on the command that fails.

Thank you for your response!

I tried your suggestion, and perhaps due to the latest changes on master, I'm getting a slightly different but very similar error. I just spent another 2 hours on this, to no avail, so any suggestion will be highly appreciated.

$ git clone https://github.com/grasph/wrapit
$ cd wrapit/
$ mkdir build && cd build
$ cmake ..
-- The C compiler identification is GNU 12.1.0
-- The CXX compiler identification is GNU 12.1.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /share/software/user/open/gcc/12.1.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /share/software/user/open/gcc/12.1.0/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found Git: /usr/bin/git (found version "1.8.3.1") 
-- Could NOT find Terminfo (missing: Terminfo_LIBRARIES Terminfo_LINKABLE) 
-- Found ZLIB: /share/software/user/open/zlib/1.2.11/lib/libz.so (found version "1.2.11") 
-- Found LibXml2: /share/software/user/open/libxml2/2.9.4/lib/libxml2.so (found version "2.9.4") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/groups/sabatti/.julia/dev/wrapit/build
$ make -j4 VERBOSE=1
/share/software/user/open/cmake/3.24.2/bin/cmake -S/home/groups/sabatti/.julia/dev/wrapit -B/home/groups/sabatti/.julia/dev/wrapit/build --check-build-system CMakeFiles/Makefile.cmake 0
/share/software/user/open/cmake/3.24.2/bin/cmake -E cmake_progress_start /home/groups/sabatti/.julia/dev/wrapit/build/CMakeFiles /home/groups/sabatti/.julia/dev/wrapit/build//CMakeFiles/progress.marks
make  -f CMakeFiles/Makefile2 all
make[1]: Entering directory `/home/groups/sabatti/.julia/dev/wrapit/build'
make  -f CMakeFiles/version.dir/build.make CMakeFiles/version.dir/depend
make[2]: Entering directory `/home/groups/sabatti/.julia/dev/wrapit/build'
cd /home/groups/sabatti/.julia/dev/wrapit/build && /share/software/user/open/cmake/3.24.2/bin/cmake -E cmake_depends "Unix Makefiles" /home/groups/sabatti/.julia/dev/wrapit /home/groups/sabatti/.julia/dev/wrapit /home/groups/sabatti/.julia/dev/wrapit/build /home/groups/sabatti/.julia/dev/wrapit/build /home/groups/sabatti/.julia/dev/wrapit/build/CMakeFiles/version.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/groups/sabatti/.julia/dev/wrapit/build'
make  -f CMakeFiles/version.dir/build.make CMakeFiles/version.dir/build
make[2]: Entering directory `/home/groups/sabatti/.julia/dev/wrapit/build'
/share/software/user/open/cmake/3.24.2/bin/cmake -D SRC=/home/groups/sabatti/.julia/dev/wrapit/src/version.cpp.in -D DST=/home/groups/sabatti/.julia/dev/wrapit/build/version.cpp -D GIT_EXECUTABLE=/usr/bin/git -P /home/groups/sabatti/.julia/dev/wrapit/version.cmake
make[2]: Leaving directory `/home/groups/sabatti/.julia/dev/wrapit/build'
[  0%] Built target version
make  -f CMakeFiles/wrapit.dir/build.make CMakeFiles/wrapit.dir/depend
make[2]: Entering directory `/home/groups/sabatti/.julia/dev/wrapit/build'
cd /home/groups/sabatti/.julia/dev/wrapit/build && /share/software/user/open/cmake/3.24.2/bin/cmake -E cmake_depends "Unix Makefiles" /home/groups/sabatti/.julia/dev/wrapit /home/groups/sabatti/.julia/dev/wrapit /home/groups/sabatti/.julia/dev/wrapit/build /home/groups/sabatti/.julia/dev/wrapit/build /home/groups/sabatti/.julia/dev/wrapit/build/CMakeFiles/wrapit.dir/DependInfo.cmake --color=
make[2]: Leaving directory `/home/groups/sabatti/.julia/dev/wrapit/build'
make  -f CMakeFiles/wrapit.dir/build.make CMakeFiles/wrapit.dir/build
make[2]: Entering directory `/home/groups/sabatti/.julia/dev/wrapit/build'
[ 11%] Building CXX object CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o -MF CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o.d -o CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/TypeRcd.cpp
[ 33%] Building CXX object CMakeFiles/wrapit.dir/src/utils.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/utils.cpp.o -MF CMakeFiles/wrapit.dir/src/utils.cpp.o.d -o CMakeFiles/wrapit.dir/src/utils.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/utils.cpp
[ 33%] Building CXX object CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o -MF CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o.d -o CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/libclang-ext.cpp
[ 44%] Building CXX object CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o -MF CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o.d -o CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/FunctionWrapper.cpp
[ 55%] Building CXX object CMakeFiles/wrapit.dir/src/CodeTree.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/CodeTree.cpp.o -MF CMakeFiles/wrapit.dir/src/CodeTree.cpp.o.d -o CMakeFiles/wrapit.dir/src/CodeTree.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/CodeTree.cpp
[ 66%] Building CXX object CMakeFiles/wrapit.dir/src/main.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/src/main.cpp.o -MF CMakeFiles/wrapit.dir/src/main.cpp.o.d -o CMakeFiles/wrapit.dir/src/main.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/src/main.cpp
[ 77%] Building CXX object CMakeFiles/wrapit.dir/version.cpp.o
/share/software/user/open/gcc/12.1.0/bin/c++  -I/share/software/user/open/llvm/15.0.3/include -I/home/groups/sabatti/.julia/dev/wrapit/build/_deps/cxxopts-src/include -std=gnu++17 -MD -MT CMakeFiles/wrapit.dir/version.cpp.o -MF CMakeFiles/wrapit.dir/version.cpp.o.d -o CMakeFiles/wrapit.dir/version.cpp.o -c /home/groups/sabatti/.julia/dev/wrapit/build/version.cpp
[ 88%] Linking CXX executable wrapit
/share/software/user/open/cmake/3.24.2/bin/cmake -E cmake_link_script CMakeFiles/wrapit.dir/link.txt --verbose=1
/share/software/user/open/gcc/12.1.0/bin/c++ -rdynamic CMakeFiles/wrapit.dir/src/TypeRcd.cpp.o CMakeFiles/wrapit.dir/src/utils.cpp.o "CMakeFiles/wrapit.dir/src/libclang-ext.cpp.o" CMakeFiles/wrapit.dir/src/FunctionWrapper.cpp.o CMakeFiles/wrapit.dir/src/CodeTree.cpp.o CMakeFiles/wrapit.dir/src/main.cpp.o CMakeFiles/wrapit.dir/version.cpp.o -o wrapit  /share/software/user/open/llvm/15.0.3/lib/libclang.so.15.0.3 /share/software/user/open/llvm/15.0.3/lib/libclangAST.so.15 
/usr/bin/ld: CMakeFiles/wrapit.dir/src/CodeTree.cpp.o: undefined reference to symbol '_ZN4llvm5APInt12initSlowCaseEmb'
/share/software/user/open/llvm/15.0.3/lib/libLLVMSupport.so.15: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [wrapit] Error 1
make[2]: Leaving directory `/home/groups/sabatti/.julia/dev/wrapit/build'
make[1]: *** [CMakeFiles/wrapit.dir/all] Error 2
make[1]: Leaving directory `/home/groups/sabatti/.julia/dev/wrapit/build'
make: *** [all] Error 2

The issue seems specific to a given installation and could not be reproduced. Closing the issue.