繁体   English   中英

如何使用正确的libstdc ++?

[英]How to use the correct 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

有什么想法吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM