链接clang lib总是未定义的符号

时间:2014-06-03 10:31:21

标签: c++ ruby compiler-construction clang swig

我创建了一些我想用swig生成的类来生成ruby绑定。 当我生成代码或编译ruby模块时,一切都很好。但是当脚本加载此模块时,会出现错误:

undefined symbol: _ZTVN5clang5LexerE 

我明白这意味着问题出在了clang :: Lexer上。但我知道我有 为此设置lclangLex lib。

这是我用来链接对象文件的命令:

clang++ -shared -o parser.so parser.o Declarations.o -L. -L/usr/lib -L. -Wl,-O1,\
--sort-common,--as-needed,-z,relro -fstack-protector -rdynamic -Wl,-export-dynamic \
-L/usr/lib  -lz -lpthread -lffi -lcurses -ldl -lm     -lruby -lclangLex -lclangAST \ 
-lpthread -lgmp -ldl -lcrypt -lm   -lc -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo \
-lLLVMTarget -lLLVMCore -lLLVMMC -lLLVMObject -lLLVMSupport

任何想法?

1 个答案:

答案 0 :(得分:0)

问题是提供给链接器的lib的顺序:

-lclangAST -lclangLex -lclangBasic 
必须在lclangLex之前给出lclangAST,然后我只需要添加lclangBasic,一切正常。