【发布时间】:2013-12-09 15:16:51
【问题描述】:
确定预编译二进制文件的依赖项(特别是关于 glibc 和 libstdc++ 符号和版本)并确保目标系统已安装这些依赖项的最佳方法是什么?
我有一个限制,我不能提供在每台机器上编译的源代码(雇主限制),所以“在每台机器上编译以确保兼容性”的 defacto 响应是不合适的。我也不希望提供静态编译的二进制文件 -> 似乎很像使用锤子打开鸡蛋的情况。
我考虑了许多方法,这些方法主要围绕通过使用以下命令来确定我的可执行文件/库所需的符号/库
ldd -v </path/executable>
要么
objdump -x </path/executable> | grep UND
然后以某种方式在目标系统上运行命令以检查是否提供了此类符号、库和版本(不完全确定我如何执行此步骤?)。
然后会进行一些模式或符号匹配,以确保存在正确的版本或更高版本。
也就是说,我觉得这已经在很大程度上为我完成了,我正在遭受......“知识差距?”目前是如何实施的。
关于如何进行的任何想法/建议?
我应该补充一点,这是为了将我的软件安装在各种 linux 发行版上 - 特别是定制集群 - 这些发行版可能不遵守发行指南或标准化打包方法。目标是无缝安装。
【问题讨论】:
-
与 glibc 和 stdc++ 相关的 GNU 头文件定义了适当的版本宏。事实上,使用 stdc++ 你可以依赖 gcc 版本,它们总是结合在一起。
-
我使用的一些库是由第三方提供的,因此我没有对它们进行源代码访问以在内部检查版本宏
标签: linux glibc binary-compatibility