我正在尝试从 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
我会很感激你的帮助。谢谢!