什么是确定预编译二进制文件依赖关系的最佳方法(特别是关于glibc和libstdc++符号和版本),然后确保目标系统已安装这些依赖项?
我有一个限制,即不能提供源代码在每台机器上进行编译(雇主限制),因此“在每台机器上编译以确保兼容性”的事实上的回应不适用。我也不希望提供静态编译的二进制文件 -> 这似乎非常像用锤子打开鸡蛋的情况。
我考虑了许多方法,大致上集中在通过使用命令来确定我的可执行文件/库所需的符号/库,例如 ldd -v </path/executable> 或 objdump -x </path/executable> | grep UND 然后在目标系统上运行某个命令来检查是否提供了这些符号、库和版本(不太确定如何执行此步骤?)。 然后会进行一些模式或符号匹配,以确保正确的版本或更高版本存在。
话虽如此,我觉得这已经在很大程度上为我完成了,我正在遭受...“知识差距?”的困扰,不知道它当前是如何实现的。
对于如何继续的想法/建议有什么想法吗?
我应该补充说,这是为了在各种Linux发行版上安装我的软件 - 特别是定制的集群 - 这些发行版可能不遵守分发指南或标准化的打包方法。目标是实现无缝安装。
我希望在安装时实现二进制兼容性,而不是在后续运行时,这可能由于用户权限不足而发生依赖关系。
此外,由于我没有访问所有第三方库的源代码并进行安装(专门的数学/工程库),因此编码中的解决方案效果不佳。我想我可以编写一个测试特定符号(&版本)是否存在的二进制文件,但这个二进制文件本身将具有兼容性问题。
我认为我的解决方案必须是针对旧库进行编译(如上所述),并将其安装以及使用LSB检查器(看起来很有前途)。
我有一个限制,即不能提供源代码在每台机器上进行编译(雇主限制),因此“在每台机器上编译以确保兼容性”的事实上的回应不适用。我也不希望提供静态编译的二进制文件 -> 这似乎非常像用锤子打开鸡蛋的情况。
我考虑了许多方法,大致上集中在通过使用命令来确定我的可执行文件/库所需的符号/库,例如 ldd -v </path/executable> 或 objdump -x </path/executable> | grep UND 然后在目标系统上运行某个命令来检查是否提供了这些符号、库和版本(不太确定如何执行此步骤?)。 然后会进行一些模式或符号匹配,以确保正确的版本或更高版本存在。
话虽如此,我觉得这已经在很大程度上为我完成了,我正在遭受...“知识差距?”的困扰,不知道它当前是如何实现的。
对于如何继续的想法/建议有什么想法吗?
我应该补充说,这是为了在各种Linux发行版上安装我的软件 - 特别是定制的集群 - 这些发行版可能不遵守分发指南或标准化的打包方法。目标是实现无缝安装。
我希望在安装时实现二进制兼容性,而不是在后续运行时,这可能由于用户权限不足而发生依赖关系。
此外,由于我没有访问所有第三方库的源代码并进行安装(专门的数学/工程库),因此编码中的解决方案效果不佳。我想我可以编写一个测试特定符号(&版本)是否存在的二进制文件,但这个二进制文件本身将具有兼容性问题。
我认为我的解决方案必须是针对旧库进行编译(如上所述),并将其安装以及使用LSB检查器(看起来很有前途)。