当尝试在 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 进行测试,这就是为什么它没有被捕获。