为各种Ubuntu版本编译C++

Compile C++ for various Ubuntu versions

本文关键字:编译 C++ 版本 Ubuntu      更新时间:2023-10-16

我们正在Linux下构建一个程序,该程序在特定的Ubuntu版本中运行良好。但是我们希望在Ubuntu 10.04和11.10上运行相同的二进制文件。在1004平台上构建应用程序是完全可以的。但当我这样做的时候,我对特定的库版本(例如libboost_thread.so.1.40.0)有依赖关系,这些版本在11.10上是不可用的,因为它使用了更新的版本。该系统是使用QMake构建的。

我正在寻找如何解决多个Ubuntu平台的依赖冲突的教程或起点。

如果没有其他人想在这方面发挥作用,我还不如注入一些东西。

我要做一些假设。

  • 您正在分发二进制/闭源应用程序
  • 你想自己分发

因此,排除了整个"让发行版/用户自己构建它"的可能性。

看看其他人是如何解决类似问题的,我可以看到,在应用程序中包含共享库,然后使用加载程序/包装器(您想称之为"加载程序/封装器")脚本在启动应用程序之前修改环境是很常见的。具体地说,他们修改LD_LIBRARY_PATH以包含应用程序中包含的/lib文件夹。

脚本可以像.一样简单

#!/bin/sh
LD_LIBRARY_PATH=./lib ./myAppReal

这就是我如何解决将Qt4应用程序分发给发行版本不比Qt-3.3.6更新的用户的问题(在2009年……说真的)编辑:用户也可以说,我指的是公司里为开发付费的5岁左右的人,我们方面的规范失败并没有要求他们在现代操作系统上说跨平台时更具体。

现在可能有人会发现这个有十几个问题,但这很好,我可以边走边更新和学习。

编辑:正如JimR所说,这会带来安全隐患,如果你让你的libs文件夹世界可写,有人可能会使用它向你的应用程序注入恶意代码。根据您计划的部署方式,它可能是一个真正的问题,也可能不是,但您应该意识到这一点。