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