代码是用c / c ++编写的,可以依赖编译主机中的一些库; 它应该运行在另一个主机没有库取决于问题。 两台主机都是linux,可能有不同的版本。 你有一个好的策略?
在Linux上纯粹的静态链接是不鼓励的 ,如果你使用另一个libc(比如dietlibc),而这个libc不是C ++的选项,那么我真正有可能使用它,我最喜欢的方法是在你必须支持的最老版本的Linux上构建应用程序因为更新的libc版本将具有向后兼容性。
这只会覆盖libc,其他要求,如gtk,pangom等将不得不直接编译到你的二进制文件中。
将应用程序静态链接,以便尽可能少地依赖动态加载的库。 这是解决这个问题的一般方法。
其他方案包括:
LD_LIBRARY_PATH
变量以使包含的版本成为首选版本。 dlopen()
和朋友动态加载库,并手动处理库版本中的差异。 大多数平台都有一个定义良好的ABI,涵盖C代码,但涵盖C ++功能的ABI尚不常见。
用libc编写的程序可能不能在另一个平台上运行。 如果二进制兼容性是一个重要的问题考虑使用c。
考虑到这个问题的所有答案(静态链接,编译最旧的Linux等),然后检查你的最终的二进制文件,由Linux应用程序检查器显示兼容性问题与其他Linux发行版。