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

linking clang lib allways undefined symbol

本文关键字:未定义 符号 clang 链接      更新时间:2023-10-16

我已经创建了一些类,我想用swig来生成ruby绑定。当我生成代码或编译ruby模块时,一切都没问题。但是当脚本加载这个模块时,会出现一个错误:

undefined symbol: _ZTVN5clang5LexerE 

我理解这意味着clang::Lexer出现了问题。但我知道我有为此设置lclangLex库。

下面是我用来链接object文件的命令:
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

你知道吗?

问题是给链接器的库的顺序:

-lclangAST -lclangLex -lclangBasic 

lclangAST必须在lclangLex之前给出,然后我只需要添加lclangBasic和一切工作。