【发布时间】:2012-10-27 01:09:13
【问题描述】:
我最近一直在使用 g++ 4.6 和 g++ 4.7 开发一个程序。我目前正在利用许多 c++11 功能。
我做出这个决定是因为我可以将库与程序一起捆绑在一个子目录中并使用 LD_LIBRARY_PATH。从那以后,我发现这导致我的程序出现段错误。我可能应该早点测试一下吧。似乎是捆绑的 libc.so.6 导致它(可能是其他的,但绝对是 libc)。
过去我曾在无法安装库的情况下使用这种技术,但它运行良好,但我从来不需要将 libc 和 libstdc++ 与程序一起包含。
有没有办法解决这个问题,还是我必须回滚到旧的 c++ / libc / libstdc++ 版本? (以及随之而来的代码更改的噩梦)
【问题讨论】:
-
你总是可以静态链接 C++ 库,
-static-libstdc++... -
我试过这个,但它不起作用。我必须使用需要 dlopen 的函数(例如 getaddrinfo),我还链接到 gnutls,它似乎使用了也无法静态链接的库。生成的二进制文件将 libstdc++ 显示为在 ldd 中动态链接。
-
如果问题是 libc.so.6 则与 gcc 或 g++ 无关
标签: c++ gcc c++11 portability libstdc++