链接 clang lib 总是未定义符号

问题描述 投票:0回答:1

我创建了一些类,我想与 swig 一起使用以生成 ruby 绑定。 当我生成代码或编译 ruby 模块时一切正常。但是当脚本加载这个模块时,出现错误:

undefined symbol: _ZTVN5clang5LexerE 

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

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

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

有什么想法吗?

c++ ruby linker clang swig
1个回答
0
投票

问题在于提供给链接器的库的顺序:

-lclangAST -lclangLex -lclangBasic 

lclangAST 必须在 lclangLex 之前给出,然后我只需添加 lclangBasic 就可以了。

© www.soinside.com 2019 - 2024. All rights reserved.