我有一个可执行文件,希望能够在其他Linux系统中分发和运行有没有办法在不访问最终运行时环境的情况下合理地确定这是否可行
例如,我担心我的可执行文件可能使用了一个只存在于我的开发机器上的动态库。
为可执行文件提供任何相关的共享库,并在调用可执行文件的shell脚本中设置$LD_LIBRARY_PATH
,以告诉链接器在哪里可以找到共享库。有关更多详细信息,请参阅ld.so(8)
手册页,并确保遵循相应的许可证。
看看Debian(.deb)和Redhat(.rpm)的包装。这是您的软件包的安装程序。它们并不那么困难,您可以告诉它引用具有所需共享对象的其他包。
打包工具通常可以修复缺少库等的包。它还可以帮助您放置二进制文件,这样您就不需要设置LD_LIBRARY_PATH或在可执行文件的前端放置shell脚本。
它们也没那么难学。花一天时间与每一个玩,你会得到一个可以通过的安装程序包。
有没有一种方法可以在不访问最终运行时环境的情况下合理地确定这是否可行?
一个人的环境可能与你的不同,即使它仍然是Linux。因此,将程序推向最广泛受众的唯一可靠方法是发布源代码。
你不能把所有东西静态地链接到一个超大质量黑洞^W^W二进制中吗?