无法与libiberty联系

时间:2012-04-22 15:19:56

标签: c++ linux static-libraries

我试图从libiberty.a调用cplus_demangle()函数,但我得到“未定义的引用'cplus_demangle'错误。

这是我的简单主要内容:

extern "C" char *cplus_demangle(const char *, int);

int main() {
  cplus_demangle("a", 0);
}

和我的构建命令(libiberty在../../ install / lib64中):

g++ -L../../install/lib64 -liberty main.cpp -o main

如果我将libiberty.a重命名为其他东西,我会收到“找不到-liberty”错误。所以,我假设链接器看到了库。我可以在libiberty.a中看到cplus_demangle:

$> nm -C --defined-only libiberty.a | grep "cplus_demangle"
0000000000002230 T cplus_demangle
...

但是我在编译时遇到了这个错误:

main.cpp:(.text+0xf): undefined reference to `cplus_demangle'
collect2: ld returned 1 exit status
make: *** [main] Error 1

我很感激你的帮助。谢谢!

1 个答案:

答案 0 :(得分:4)

将-liberty移动到命令行的末尾。创建main.o后应搜索库。订单很重要。