当尝试在 Linux 系统上使用 release/10.x 和 master 分支上的 llvm-10.0 构建 Halide 时,面临以下问题
When trying to build Halide on Linux system with llvm-10.0 on release/10.x and master branches, facing the below issue
[ 53%] Linking CXX executable test_function_dag
/bin/ld: ../../libHalide.so.10.0.0: undefined reference to `typeinfo for llvm::SectionMemoryManager'
collect2: error: ld returned 1 exit status
make[2]: *** [src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/build.make:134: src/autoschedulers/adams2019/test_function_dag] Error 1
make[1]: *** [CMakeFiles/Makefile2:2328: src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/all] Error 2
make: *** [Makefile:182: all] Error 2
我正在使用预构建的 LLVM 二进制文件和下面的 cmake 命令来配置
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR=/home/harry/llvm/lib/cmake/llvm ../
任何意见和建议将不胜感激。
我从 release/10.x
克隆了 Halide,并针对 LLVM 10.0.0 二进制文件 obtained here 进行了编译。在 Ubuntu 20.04 LTS 上,我还必须 apt install libtinfo5
因为这些二进制文件是针对旧系统库构建的。
我注意到官方二进制文件不是在启用 RTTI 的情况下构建的(呃),并且能够重现和修复。 dependencies/llvm/CMakeLists.txt
中存在错误。找到以下行:
$<$<COMPILE_LANG_AND_ID:CXX,GCC,Clang,AppleClang>:-fno-rtti>)
并将 GCC
更改为 GNU
。我们不使用 non-RTTI LLVM 进行测试,这就是为什么它没有被捕获。
[ 53%] Linking CXX executable test_function_dag
/bin/ld: ../../libHalide.so.10.0.0: undefined reference to `typeinfo for llvm::SectionMemoryManager'
collect2: error: ld returned 1 exit status
make[2]: *** [src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/build.make:134: src/autoschedulers/adams2019/test_function_dag] Error 1
make[1]: *** [CMakeFiles/Makefile2:2328: src/autoschedulers/adams2019/CMakeFiles/test_function_dag.dir/all] Error 2
make: *** [Makefile:182: all] Error 2
我正在使用预构建的 LLVM 二进制文件和下面的 cmake 命令来配置
cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_DIR=/home/harry/llvm/lib/cmake/llvm ../
任何意见和建议将不胜感激。
我从 release/10.x
克隆了 Halide,并针对 LLVM 10.0.0 二进制文件 obtained here 进行了编译。在 Ubuntu 20.04 LTS 上,我还必须 apt install libtinfo5
因为这些二进制文件是针对旧系统库构建的。
我注意到官方二进制文件不是在启用 RTTI 的情况下构建的(呃),并且能够重现和修复。 dependencies/llvm/CMakeLists.txt
中存在错误。找到以下行:
$<$<COMPILE_LANG_AND_ID:CXX,GCC,Clang,AppleClang>:-fno-rtti>)
并将 GCC
更改为 GNU
。我们不使用 non-RTTI LLVM 进行测试,这就是为什么它没有被捕获。