我试图从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
我很感激你的帮助。谢谢!
答案 0 :(得分:4)
将-liberty移动到命令行的末尾。创建main.o后应搜索库。订单很重要。