编译某个测试代码时,出现了下面的错误:
# g++ -std=c++11 -o testlurkcli main.cpp -L. -llurkcli-lasl -static
/usr/bin/ld: cannot find -lstdc++
/usr/bin/ld: cannot find -lm
/usr/bin/ld: cannot find -lc
collect2: error: ld returned 1 exit status
这个错误,是在最后的链接阶段,没有找到 libstdc++,libm,libc等这几个库。正常而言,这几个库的动态库都是存在的,这里因为使用了”-static”选项,导致链接时没有找到这几个库的静态版本。
网上查了一下,大部分是推荐把这几个库的静态库版本找到并软连接到/usr/lib64/中。
不过这里采用一种动态库和静态库混合编译的方法去解决。具体编译过程如下:
# g++ -std=c++11 main.cpp liblurkcli.a libasl.a -lpthread-o testlurkcli
或者&#x