我刚刚编译了gcc 的主干版本,但是当使用g ++编译c ++项目时,我发现缺少应该存在的标准库组件,如std::conjunction
。当我检查我的本地存储库(gcc_trunk/libstdc++-v3/include/std
)中的代码时,似乎一切都在那里。如何确保使用正确版本的 libstdc++
?
以下是我用来检查系统各自输出的一些命令
$ readelf -d /usr/lib64/libstdc++.so.6 | grep soname
0x000000000000000e (SONAME) Library soname: [libstdc++.so.6]
$ ls -l / usr / lib / libstdc ++。so.6
lrwxrwxrwx 1 root root 19 Jan 7 13:19 /usr/lib/libstdc++.so.6 -> libstdc++.so.6.0.23
有什么想法?
答案 0 :(得分:0)
我假设您已将新GCC安装到某个非标准位置(即不在/usr
下),因此在运行时,您的应用会尝试使用不兼容的主机/usr/lib/libstdc++.so
。要解决此问题,您可以执行
LD_LIBRARY_PATH
设置为指向新的GCC库文件夹libstdc++
与-static-libstdc++
静态链接(这是部分解决方案,因为其他编译器库,例如libgcc.so
仍将来自主机GCC)