gpt4 book ai didi

c++ - 链接 clang-llvm

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:02 24 4
gpt4 key购买 nike

我一直在使用 clang/llvm 开发一个小工具,但我未能成功获得 g++ 和 gnu 的链接器以将我的代码正确链接到 clang。

我的链接器产生了以下错误:

undefined reference to `clang::FileManager::~FileManager()'

undefined reference to `clang::FileManager::FileManager()'

undefined reference to `llvm::sys::getHostTriple()'

undefined reference to `clang::Diagnostic::Diagnostic(clang::DiagnosticClient*)'

undefined reference to `llvm::outs()'

undefined reference to `clang::TargetInfo::CreateTargetInfo(clang::Diagnostic&, clang::TargetOptions&)'

undefined reference to `clang::SourceManager::getOrCreateContentCache(clang::FileEntry const*)'

undefined reference to `clang::SourceManager::createFileID(clang::SrcMgr::ContentCache const*, clang::SourceLocation, clang::SrcMgr::CharacteristicKind, unsigned int, unsigned int)'

我的编译命令是这样的:

g++ -g -fno-rtti -I~/llvm-2.8/tools/clang-2.8/include \
-I~/llvm-2.8/llvm/include \
`~/bin/llvm-config --cxxflags` \
-c Frontend.cpp

g++ -g -fno-rtti -I~/llvm-2.8/tools/clang-2.8/include \
-I~/llvm-2.8/llvm/include \
`~/bin/llvm-config --cxxflags` \
-c exec.cpp

g++ -I~/llvm-2.8/tools/clang-2.8/include \
-I~/llvm-2.8/llvm/include -L~/opt/lib/ \
-g -fno-rtti -lclangDriver -lclangAnalysis \
-lclangFrontend -lclangSema -lclangAST -lclangParse \
-lclangLex -lclangBasic \
`~/bin/llvm-config --cxxflags --ldflags --libs` \
Frontend.o exec.o -o run

欢迎任何提示或建议。

干杯,ct

PS:我一直在探索这个页面上的一些信息:

http://ubuntuforums.org/showthread.php?t=532693

它可能会奏效,我会在可能的时候就该提示发表评论。

解决方案

使用本教程中的 clang 代码(必须修改以删除对 FileSystemOptions 的引用 b/c clang/Basic/FileSystemOptions.h 在 clang-2.8 中不存在):http://clangtutorial.codeplex.com/

g++ tutorial1.cpp -g -fno-rtti -lclangFrontend -lclangDriver       \
-lclangCodeGen -lclangSema -lclangChecker -lclangAnalysis \
-lclangRewrite -lclangAST -lclangParse -lclangLex -lclangBasic \
-lLLVMSupport -lLLVMSystem -I~/opt/include/ \
`llvm-config --cxxflags --ldflags --libs all`

似乎成功了!

最佳答案

当我针对 llvm/clang 构建一些东西时,这就是我用来构建它的东西。或许您可以比较两条构建线。

此外,我使用的 llvm-config 命令是:llvm-config --cxxflags --ldflags --libs backend

最后,这可能部分与订购问题有关。在包含 clang 库之前,您可能希望包含 llvm 的库。

/usr/bin/g++                                                              \
-fno-exceptions -fno-rtti -fno-common \
-I/Users/wlynch/Homebrew/include \
-DNDEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS \
../src/main.cpp -c -o src/main.cpp.0.o

/usr/bin/g++
src/main.cpp.0.o -o /Users/wlynch/Dropbox/Clang/Indexer/build/main \
-L/Users/wlynch/Homebrew/lib -L/Users/wlynch/Homebrew/lib \
-lpthread -lm \
-lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG \
-lLLVMAsmPrinter -lLLVMMCParser -lLLVMCodeGen -lLLVMScalarOpts -lLLVMInstCombine \
-lLLVMTransformUtils -lLLVMipa -lLLVMAnalysis -lLLVMTarget -lLLVMCore \
-lLLVMX86AsmPrinter -lLLVMMC -lLLVMX86Info -lLLVMSupport -lLLVMSystem \
-lclangAST -lclangAnalysis -lclangBasic -lclangChecker -lclangCodeGen \
-lclangDriver -lclangFrontend -lclangFrontendTool -lclangIndex -lclangLex \
-lclangParse -lclangRewrite -lclangSema -lclangSerialization

关于c++ - 链接 clang-llvm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4444692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com