我一直在努力寻找一种方法让我的应用程序在不同的Ubuntu LTS版本之间兼容。
但是,大部分时间以 “符号查找错误结束:” 或 “找不到libxxxx.so.xx”
要求非常明确,开发人员应该能够在最后3个Ubuntu LTS(目前为12,14,16-04)版本之一上编译代码,并且输出应该能够在所有3个最后版本上运行。但问题变得越来越复杂。
有没有办法做到这一点?
提前致谢。
答案 0 :(得分:2)
在旧版本上编译的Linux二进制文件通常与较新的版本兼容。内核在向后兼容方面投入了大量精力 - 就像glibc一样。对于所有图书馆而言,这可能并非如此,但根据我的经验;最试试。 所以,您可能想要做的是,在最早的受支持的发行版上编译您的应用程序,它很可能适用于较新的发行版。
答案 1 :(得分:2)
一个非常简单的技巧是......在适当的发行版上从源代码编译。
你甚至可以将其自动化,因为Ubuntu / Canonical会在Launchpad上为你提供免费帐户。例如,我将PPA用于我想要的工作,家庭或Travis CI的后端或无包装来源......以特定的发布风格。
否则,非常明显的替代方案当然是创建一个 static 构建,它独立于特定版本的运行时。这将“永远”工作或直到内核发生变化。在我使用Linux的20多年里,这种改变发生过一次(引入了Elf格式)。