在不同的Ubuntu版本中编译和运行c ++应用程序

时间:2017-01-21 14:38:46

标签: c++ ubuntu

我一直在努力寻找一种方法让我的应用程序在不同的Ubuntu LTS版本之间兼容。

但是,大部分时间以 “符号查找错误结束:” “找不到libxxxx.so.xx”

要求非常明确,开发人员应该能够在最后3个Ubuntu LTS(目前为12,14,16-04)版本之一上编译代码,并且输出应该能够在所有3个最后版本上运行。但问题变得越来越复杂。

有没有办法做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:2)

在旧版本上编译的Linux二进制文件通常与较新的版本兼容。内核在向后兼容方面投入了大量精力 - 就像glibc一样。对于所有图书馆而言,这可能并非如此,但根据我的经验;最试试。 所以,您可能想要做的是,在最早的受支持的发行版上编译您的应用程序,它很可能适用于较新的发行版。

答案 1 :(得分:2)

一个非常简单的技巧是......在适当的发行版上从源代码编译。

你甚至可以将其自动化,因为Ubuntu / Canonical会在Launchpad上为你提供免费帐户。例如,我将PPA用于我想要的工作,家庭或Travis CI的后端或无包装来源......以特定的发布风格。

否则,非常明显的替代方案当然是创建一个 static 构建,它​​独立于特定版本的运行时。这将“永远”工作或直到内核发生变化。在我使用Linux的20多年里,这种改变发生过一次(引入了Elf格式)。