和别人一起用 clang 做毕设,用的 clang 的 C++ API。
官网的教程全是让你和 llvm+clang+clang-tools-extra 一起构建,这样的话,时间你懂的。。。
只设置-lLLVM-5.0
的话,似乎不会链接libclang*.a
这几个文件。
但是一个一个手打的话,太多了。。。没有一个统一的 flag 吗?
加了一个/usr/lib/libclang*.a
还不行。。。还有库没链接到。。。
是链接顺序的问题,用这条命令解决了,应该有多余的,不过不知道怎么写Makefile或CMakeLists。。。
g++ `llvm-config --cxxflags --ldflags` \
ClangCheck.cc \
-lclangTooling -lclangFrontendTool -lclangFrontend \
-lclangDriver -lclangSerialization -lclangCodeGen \
-lclangParse -lclangSema -lclangStaticAnalyzerFrontend \
-lclangStaticAnalyzerCheckers -lclangStaticAnalyzerCore \
-lclangAnalysis -lclangARCMigrate -lclangRewrite \
-lclangRewriteFrontend -lclangEdit -lclangAST
-lclangLex -lclangBasic -lclang \
`llvm-config --libs --system-libs` -o main
1
congeec 2018-01-16 13:11:12 +08:00
用的什么操作系统?
怎么加的 *, 是传参给 shell 了,还是传参给连接器了? anyway,你怎么传都不对 一般用 ld 链接到 libclang.so 就行了,ld ${LDFALGS} object.o -l/usr/lib/libclang.a. ld 可以直接用-l 指定文件,也可以用 -L${directory} -lm 之类的来找到链接库 |
2
kiwi95 2018-01-16 13:18:39 +08:00
|
3
hackpro 2018-01-16 15:35:15 +08:00
指定文件 指定名字链接器优先还是会用 so 文件吧
|
4
forcecharlie 2018-01-16 17:39:43 +08:00
你还可以使用 -rpath 设置成 libclang.so 还可以设置 LD_LIBRARY_PATH,反正不像 Windows 的 dll 目录那么方便( Windows 存在 dll 注入。)
|
5
linux40 OP |
6
rogerchen 2018-01-16 22:43:13 +08:00
libclang 没有自己的 pkgconfig 么?
|
7
iceheart 2018-03-22 08:22:43 +08:00 via Android
- L/sopath
|