1

我正在尝试从 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

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

4

1 回答 1

4

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

于 2012-04-22T15:23:26.853 回答