为各种Ubuntu版本编译C ++

时间:2012-02-17 13:41:25

标签: c++ ubuntu

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

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

1 个答案:

答案 0 :(得分:3)

如果没有其他人感觉像是在摇摆,我也可以注入一些东西。

我将做一些假设。

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

因此排除整体“只是让发行版/用户自己构建它们”。

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

脚本可以很简单。

#!/bin/sh

LD_LIBRARY_PATH=./lib ./myAppReal

这就是我解决将Qt4应用程序分发给分发不比Qt-3.3.6更新的用户的问题(2009年......认真对待)。 编辑:也许用户也说我的意思是公司支付开发费用的5个人,我们的规格失败并没有要求他们在现代操作系统上说跨平台时更具体

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

编辑:正如JimR所说,这会带来安全隐患,如果您将libs文件夹保留为可写,则有人可能会使用它将恶意代码注入您的应用程序。根据您计划部署的方式,它可能是或不是真正的问题,但您应该了解它。