如何使用正确的libstdc ++?

时间:2017-01-08 22:55:28

标签: c++ gcc g++ libstdc++

我刚刚编译了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

有什么想法?

1 个答案:

答案 0 :(得分:0)

我假设您已将新GCC安装到某个非标准位置(即不在/usr下),因此在运行时,您的应用会尝试使用不兼容的主机/usr/lib/libstdc++.so。要解决此问题,您可以执行

之一
  • 运行您的应用,LD_LIBRARY_PATH设置为指向新的GCC库文件夹
  • 将您的应用与-Wl,-rpath
  • 相关联
  • 通过libstdc++-static-libstdc++静态链接(这是部分解决方案,因为其他编译器库,例如libgcc.so仍将来自主机GCC)