提问人:cgbsu 提问时间:12/29/2022 更新时间:12/29/2022 访问量:162
LLVM - 将 LLVM-13 与 Conan 一起使用时无法链接支持库/链接器错误
LLVM - Cant Link Support Librarys/Linker Erros When Using LLVM-13 with Conan
问:
我正在使用 LLVM conan 包来构建我的编译器,到目前为止,它进展顺利,直到我一直在尝试使用 和 .我得到了对两者的未定义引用。两者似乎都来自 LLVM 支持库,并且至少似乎是自动生成的(我在我的系统上找到了它的源代码)。柯南似乎告诉 CMake 在 LLVM 支持库中链接,因为我可以看到当我尝试构建并收到错误(例如)时它被传递给链接器。我看到有些人过去在切换到带有 LLVM 3/4 的 GCC 5 时遇到链接器错误。但这是 LLVM-13.0.0 和 gcc-12.0.1。我看到柯南警告 C++ ABI 与 GCC-5 的兼容性llvm::sys::getDefaultTargetTriple
llvm::TargetRegistry::lookupTarget
llvm::sys::getDefaultTargetTriple
.inc
-lLLVMSupport
我更改了个人资料上的设置,但尚未更改。我可能会尝试重建 LLVM 并更新这篇文章。
我真的需要在几个小时内得到这个,是吗
- 有一种方法可以手动知道我的操作系统的三元组字符串应该是什么?我在这里看到了格式。它似乎是基于宏?就足够了吗?
gcc -dumpmachine
- 用它来手动生成“目标”有多可行,我正在对此进行逆向工程
- 主要问题是,我怎样才能修复这个错误并链接到和
llvm::sys::getDefaultTargetTriple
llvm::TargetRegistry::lookupTarget
以下是完整的日志:
root@3129d254c74c:~/workdir/compilerbuild# ninja warp_compiler
[2/2] Linking CXX executable bin/warp_compiler
FAILED: bin/warp_compiler
: && /usr/bin/c++ CMakeFiles/warp_compiler.dir/Compiler/Compile.cpp.o CMakeFiles/warp_compiler.dir/Compiler/FunctionParser.cpp.o CMakeFiles/warp_compiler.dir/Compiler/Main.cpp.o -o bin/warp_compiler -L/root/.conan/data/cpputest/4.0/_/_/package/7f06ab4d29b1f14af224d13dc05f362c6832ed41/lib -L/root/.conan/data/llvm-core/13.0.0/_/_/package/6efbb14f313e71b5e1dbf77c1c011f47614b7c7c/lib -L/root/.conan/data/libxml2/2.9.10/_/_/package/c4a7cacf01760cbd7354b11a55bf653f7df2bf5d/lib -L/root/.conan/data/zlib/1.2.12/_/_/package/2a19826344ff00be1c04403f2f8e7008ed3a7cc6/lib -L/root/.conan/data/libiconv/1.17/_/_/package/2a19826344ff00be1c04403f2f8e7008ed3a7cc6/lib -Wl,-rpath,/root/.conan/data/cpputest/4.0/_/_/package/7f06ab4d29b1f14af224d13dc05f362c6832ed41/lib:/root/.conan/data/llvm-core/13.0.0/_/_/package/6efbb14f313e71b5e1dbf77c1c011f47614b7c7c/lib:/root/.conan/data/libxml2/2.9.10/_/_/package/c4a7cacf01760cbd7354b11a55bf653f7df2bf5d/lib:/root/.conan/data/zlib/1.2.12/_/_/package/2a19826344ff00be1c04403f2f8e7008ed3a7cc6/lib:/root/.conan/data/libiconv/1.17/_/_/package/2a19826344ff00be1c04403f2f8e7008ed3a7cc6/lib lib/liblibwarp.a -lCppUTestExt -lCppUTest -lLLVMTableGenGlobalISel -lLLVMTableGen -lLLVMFileCheck -lLLVMAArch64AsmParser -lLLVMAArch64CodeGen -lLLVMAArch64Disassembler -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64Utils -lLLVMAMDGPUAsmParser -lLLVMAMDGPUCodeGen -lLLVMMIRParser -lLLVMAMDGPUDisassembler -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUUtils -lLLVMARMAsmParser -lLLVMARMCodeGen -lLLVMARMDisassembler -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMUtils -lLLVMAVRAsmParser -lLLVMAVRCodeGen -lLLVMAVRDesc -lLLVMAVRDisassembler -lLLVMAVRInfo -lLLVMBPFAsmParser -lLLVMBPFCodeGen -lLLVMBPFDesc -lLLVMBPFDisassembler -lLLVMBPFInfo -lLLVMCoverage -lLLVMDWARFLinker -lLLVMDWP -lLLVMDebugInfoGSYM -lLLVMDlltoolDriver -lLLVMFrontendOpenACC -lLLVMFuzzMutate -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDisassembler -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMInterfaceStub -lLLVMInterpreter -lLLVMLTO -lLLVMExtensions -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDisassembler -lLLVMLanaiDesc -lLLVMLanaiInfo -lLLVMLibDriver -lLLVMOption -lLLVMLineEditor -lLLVMMCA -lLLVMMCJIT -lLLVMMSP430AsmParser -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Disassembler -lLLVMMSP430Info -lLLVMMipsAsmParser -lLLVMMipsCodeGen -lLLVMMipsDesc -lLLVMMipsDisassembler -lLLVMMipsInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMObjectYAML -lLLVMOrcJIT -lLLVMPasses -lLLVMCoroutines -lLLVMipo -lLLVMFrontendOpenMP -lLLVMIRReader -lLLVMAsmParser -lLLVMInstrumentation -lLLVMLinker -lLLVMVectorize -lLLVMObjCARCOpts -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMJITLink -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMPowerPCAsmParser -lLLVMPowerPCCodeGen -lLLVMPowerPCDesc -lLLVMPowerPCDisassembler -lLLVMPowerPCInfo -lLLVMRISCVAsmParser -lLLVMRISCVCodeGen -lLLVMRISCVDisassembler -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMSparcAsmParser -lLLVMSparcCodeGen -lLLVMSparcDesc -lLLVMSparcDisassembler -lLLVMSparcInfo -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMSystemZAsmParser -lLLVMSystemZCodeGen -lLLVMSystemZDisassembler -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMWebAssemblyAsmParser -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyUtils -lLLVMWindowsManifest -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMCFGuard -lLLVMGlobalISel -lLLVMX86Desc -lLLVMX86Disassembler -lLLVMX86Info -lLLVMXCoreCodeGen -lLLVMAsmPrinter -lLLVMDebugInfoDWARF -lLLVMDebugInfoMSF -lLLVMSelectionDAG -lLLVMCodeGen -lLLVMBitWriter -lLLVMScalarOpts -lLLVMAggressiveInstCombine -lLLVMInstCombine -lLLVMTransformUtils -lLLVMTarget -lLLVMAnalysis -lLLVMProfileData -lLLVMXCoreDesc -lLLVMXCoreDisassembler -lLLVMMCDisassembler -lLLVMXCoreInfo -lLLVMXRay -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMBitReader -lLLVMCore -lLLVMRemarks -lLLVMBitstreamReader -lLLVMTextAPI -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle -lxml2 -lz -liconv -lcharset -ldl -lrt -lm -lpthread && :
/usr/bin/ld: CMakeFiles/warp_compiler.dir/Compiler/Compile.cpp.o: in function `Warp::SyntaxTranslation::LLVM::initialize_target(llvm::Module&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, llvm::TargetOptions, llvm::Optional<llvm::Reloc::Model>)':
Compile.cpp:(.text+0x1534): undefined reference to `llvm::TargetRegistry::lookupTarget(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
/usr/bin/ld: CMakeFiles/warp_compiler.dir/Compiler/Main.cpp.o: in function `main':
Main.cpp:(.text+0xf46): undefined reference to `llvm::sys::getDefaultTargetTriple[abi:cxx11]()'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
答:
1赞
cgbsu
12/29/2022
#1
它使用的是旧的 libstdcxx,我运行:
conan profile update settings.compiler.libcxx=libstdc++11 default
然后编辑我的 conanfile.txt 以仅包含对 和 run 的引用llvm-core/13.0.0
conan install .. --build=llvm-core
现在它起作用了!
评论