代码是c/c++编写的,可能依赖于编译主机中的一些库;它应该在另一个没有库的主机上运行,具体取决于问题。两台主机都是linux,可能有不同的版本。你有好的策略吗?
问问题
299 次
4 回答
2
静态链接应用程序,使其依赖尽可能少的动态加载库。这是这个问题的一般解决方案。
其他解决方案包括:
- 随应用程序提供所需的库,并覆盖系统
LD_LIBRARY_PATH
变量以使包含的版本成为首选版本。 - 编写代码以动态加载使用
dlopen()
和朋友的库,并手动处理库版本的差异。
于 2012-10-09T09:50:33.577 回答
0
大多数平台都有定义明确的 ABI,涵盖 C 代码,但涵盖 C++ 功能的 ABI 还不常见。
仅使用 libc 用 c++ 编写的程序可能无法在其他平台上运行。如果二进制兼容性是一个重要问题,请考虑使用 c。
于 2012-10-09T11:13:59.433 回答
0
考虑这个问题的所有答案(静态链接、在最旧的 Linux 上编译等),然后通过Linux App Checker检查您的最终二进制文件,以显示与其他 Linux 发行版的兼容性问题。
于 2012-10-10T07:06:57.070 回答