【问题标题】:linking clang lib allways undefined symbol链接clang lib总是未定义的符号
【发布时间】:2014-06-03 10:31:20
【问题描述】:

我创建了一些我想与 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

有什么想法吗?

【问题讨论】:

  • 我认为你动态链接到clang,你应该在运行时加载提供此功能的libclang.so。
  • 是的,这个模块是动态链接到clang的。但我真的不明白你想告诉我“你应该在运行时加载 libclang.so”

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


【解决方案1】:

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

-lclangAST -lclangLex -lclangBasic 

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

【讨论】:

    猜你喜欢
    • 2022-12-12
    • 1970-01-01
    • 2013-12-24
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    • 2010-09-17
    相关资源
    最近更新 更多