代码用c / c ++编写,可能依赖于编译主机中的一些库; 它应该在没有libs的另一个主机上运行,具体取决于问题。两个主机都是linux,可能有不同的版本。 你有一个好的策略吗?
答案 0 :(得分:3)
Linux上的纯静态链接是discouraged,只有使用替代的libc(例如dietlibc)才能真正实现,而这种替代libc不是C ++的选项,我的favoured方法是构建您必须支持最旧版本的Linux上的应用程序,因为较新的libc版本将具有向后兼容性。
这只包括libc,其他要求,如gtk,pangom等必须直接编译到你的二进制文件中。
答案 1 :(得分:2)
静态链接应用程序,以便它依赖于尽可能少的动态加载库。这是解决这个问题的一般方法。
其他解决方案包括:
LD_LIBRARY_PATH
变量,使包含的版本成为首选版本。dlopen()
和朋友动态加载库,并手动处理库版本的差异。答案 2 :(得分:0)
大多数平台都有明确定义的ABI,涵盖C代码,但涵盖C ++功能的ABI尚未普及。
使用libc用c ++编写的程序可能无法在另一个平台上运行。 如果二进制兼容性是一个重要问题,请考虑使用c。
答案 3 :(得分:0)
考虑此问题的所有答案(静态链接,在最旧的Linux上编译等),然后通过Linux App Checker检查最终二进制文件,以显示与其他Linux发行版的兼容性问题。