使用 clang 为较旧的 Ubuntu 版本构建

使用 clang 为较旧的 Ubuntu 版本构建

问题开始于我最近更新了 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开发机器上,而不存在于目标机器上。

有什么想法可以解决这个问题吗?

更新

有一个解决方案这里建议静态链接到libstdc++并且有很好的阅读这里调查这种方法的利弊。但是还有其他可能性吗?

答案1

如果您的问题尚未解决,除了静态链接之外,我还可以建议两个选项:

  1. 捆绑您的应用程序所需的所有库并设置LD_LIBRARY_PATH和/或rpath您的二进制文件。
  2. 如果您正在开发服务器端应用程序,将它们作为从 Ubuntu Vivid 继承的 Docker 映像发布也可能是一种选择。

相关内容