我们正在Linux下构建一个程序,它可以在特定的Ubuntu版本中运行.但我们希望在Ubuntu 10.04和11.10上运行相同的二进制文件.在10.04平台上构建应用程序是完全可以的.但是当我这样做时,我依赖于特定的库版本(例如libboost_thread.so.1.40.0),这些版本在11.10上是不可用的,因为它使用了更新的版本.系统使用QMake构建.
我正在寻找一个教程或起点如何解决多个Ubuntu平台的这些依赖冲突.
如果没有其他人愿意对此采取行动,我也可以注射一些东西。
我将做出一些假设。
因此排除了整个“让发行版/用户自己为他们的设置构建它”。
看看其他人如何解决类似的问题,我可以发现,通常将共享库包含在您的应用程序中,然后使用加载程序/包装器(您想称之为它),即在启动应用程序之前修改环境的脚本。具体来说,他们修改 LD_LIBRARY_PATH 以包含应用程序中包含的 /lib 文件夹。
该脚本可以像这样简单。
#!/bin/sh
LD_LIBRARY_PATH=./lib ./myAppReal
Run Code Online (Sandbox Code Playgroud)
这就是我解决将 Qt4 应用程序分发给未发布比 Qt-3.3.6 更新的发行版的用户的方法(2009 年......认真地说)。编辑:也可能会说,我所说的用户是指公司的 5 名左右的人为开发付费,我们方面的规范失败,当他们说现代操作系统上的跨平台时,我们没有要求他们更具体。
现在有人可能会发现大约有十几个问题,但这很好,我可以随时更新和学习。
编辑:正如 JimR 所说,这会带来安全隐患,如果您将 libs 文件夹设置为可写,那么有人可能会使用它向您的应用程序注入恶意代码。根据您计划的部署方式,它可能是也可能不是真正的问题,但您应该意识到这一点。
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |