什么是确定预编译的二进制文件的依赖关系的最佳方式(特别是在问候的glibc和libstdC++符号&版本),然后确保目标系统已经安装了这些?确定二进制兼容性linux下
我有一个限制,因为我无法提供在每台机器上进行编译的源代码(雇主限制),因此“在每台机器上编译以确保兼容性”的响应并不合适。我也不希望提供静态编译的二进制文件 - >似乎非常适合用锤子打开一个蛋。
我已经考虑了一些方法,其松散地中心周围确定所述符号/库我的可执行/库需要通过使用如 ldd -v </path/executable>
或 objdump -x </path/executable> | grep UND
然后以某种方式运行目标系统上的命令,检查命令的如果提供这样的符号,库和版本(不完全确定我是如何做这一步的?)。 然后会进行一些模式或符号匹配,以确保存在正确的版本或更高版本。
这么说,我觉得这已经对我来说在很大程度上完成,我是从...患“知识差距?”它是如何实施的。
对如何进行任何想法/建议?
我要补充一点,这是在各种Linux发行版的安装我的软件的目的 - 特别定制的集群 - 这可能不服从分配的准则或规范的包装方法。目标是无缝安装。
可能重复:http://stackoverflow.com/questions/4266354/how-to-tell-if-glibc-is-used用glibc和STDC++相关 – oakad
GNU头已经相应版本的宏定义。事实上,使用stdC++你可以依靠gcc版本,它们总是聚集在一起。 – oakad
我使用的一些库是由第三方提供的,因此我没有源访问权限来内部检查版本宏 – John