Linker想要我已经链接过的图书馆

时间:2012-06-03 22:40:18

标签: c++ linker

[1/2] g++ -std=gnu++11 -Wall -g -I/usr/local/include -c test.cpp -o test.o
[2/2] g++ -std=gnu++11 -L/usr/local/lib64 -Wl,-rpath,/usr/local/lib64 -glog -lfolly test.o -o hello
FAILED: g++ -std=gnu++11 -L/usr/local/lib64 -Wl,-rpath,/usr/local/lib64 -glog -lfolly test.o -o hello
/usr/bin/ld: /usr/local/lib64/libfolly.so: undefined reference to symbol '_ZN6google15LogMessageFatalD1Ev'
/usr/bin/ld: note: '_ZN6google15LogMessageFatalD1Ev' is defined in DSO /usr/local/lib64/libglog.so.0 so try adding it to the linker command line
/usr/local/lib64/libglog.so.0: could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status

libglog位于/usr/local/lib64内,就像libfolly一样。由于某种原因,它在glog库上“无法读取符号”。为什么不?我已经尝试添加所有这些内容而不做任何更改:-ldl -lc -lpthread -lrt 由于我不知道为什么它们应该是必要的,我将它们从上面的输出中删除了。

2 个答案:

答案 0 :(得分:4)

你有-glog。它不应该是-lglog吗?

答案 1 :(得分:0)

您应该使用-lglog。由于共享对象库名称是libglog.so.0(检查存储所有.so的路径)。