我正在使用Linux Mint 15 Olivia,并且我在版本库中安装了可用的clang编译器和libclang-dev软件包,它们是3.2版本。在Linux上与clang/llvm库链接总是失败
我想编译并链接来自ng版本库http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_32/final/examples/clang-interpreter/main.cpp的示例,因为您可以看到它来自铿锵声版本3.2。
当我用命令编译它:
$> clang++ `llvm-config --cflags` -c main.cpp
我得到了其中包含了一些不确定的符号铛/ LLVM库的文件main.o。我确信它利用纳米命令包含符号:
$> nm main.o
从铛符号将
_ZN5clang16CompilerInstanceC1Ev
到现在为止一切运行良好,直到我试图链接“main.o”文件与clang/llvm库。当我发出命令:
$> clang++ `llvm-config --ldflags` main.o `llvm-config --libs`
它失败,出现以下输出(我只是把第一个错误,以不扰乱这个帖子):
main.o: In function `main':
main.cpp:74: undefined reference to `clang::TextDiagnosticPrinter::TextDiagnosticPrinter(llvm::raw_ostream&, clang::DiagnosticOptions*, bool)'
基本上,我得到了一大堆未定义的引用来铿锵图书馆。我已经尝试过对此进行研究,并且我发现所有这一切都与您在命令行上放置库标记的顺序有关。除此之外,我也尝试过一些其他的事情:
- 我尝试了一堆编译器标志,改变其连接标志出现的顺序,他们从来没有工作过。
- 我下载并编译了LLVM和clang源代码3.2和3.4版,结果相同:编译工作,链接失败。值得一提的是,对于每个版本,重新排序链接器标志总是给出不同的链接错误(这当然是由于链接搜索库的方式)。
我用完了想法,已经花了2个小时试图从clang的仓库编译一个简单的例子,任何帮助将不胜感激。
谢谢
感谢您的答复,我会尝试,只要我得到我的手我的发展电脑 – elfus
那天晚上我绝对是累了,失明....我用那个Makefile作为例子,并且还使用了标志的顺序,因为铛取决于llvm,现在它编译:) 谢谢! – elfus