问题开始于我最近更新了 Ubuntu Vivid (15.04)。现在clang-3.5
依赖于libstdc++-4.9
(而不是以前的版本4.8
),而我编译的程序无法在 Trusty (14.04) 上运行:
./my_app: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./my_app)
开发机器和目标机器上都g++
安装了gcc
版本4.8.4
。但是新的 clang 版本添加了所需的版本依赖项,该依赖项仅存libstdc++6
在于GLIBCXX_3.4.20
开发机器上,而不存在于目标机器上。
有什么想法可以解决这个问题吗?
更新:
答案1
如果您的问题尚未解决,除了静态链接之外,我还可以建议两个选项:
- 捆绑您的应用程序所需的所有库并设置
LD_LIBRARY_PATH
和/或rpath
您的二进制文件。 - 如果您正在开发服务器端应用程序,将它们作为从 Ubuntu Vivid 继承的 Docker 映像发布也可能是一种选择。