【问题标题】:How can I know if my executable will also to run on other computers (linux)?我怎么知道我的可执行文件是否也可以在其他计算机(linux)上运行?
【发布时间】:2011-06-14 02:31:35
【问题描述】:

我有一个可执行文件,我希望能够在其他 Linux 系统中分发和运行。 在不访问最终运行时环境的情况下,有没有办法合理地确定这是否可行?

例如,我担心我的可执行文件可能正在使用仅存在于我的开发机器上的动态库。

【问题讨论】:

    标签: linux linker executable


    【解决方案1】:

    为任何相关的共享库提供可执行文件,并在调用可执行文件的 shell 脚本中设置 $LD_LIBRARY_PATH 以告诉链接器在哪里可以找到共享库。有关更多详细信息,请参阅 ld.so(8) 手册页,并确保遵循相应的许可。

    【讨论】:

    • 好点。但我目前的问题是,我想知道我是否已经处理了所有库,是否其中一个库会丢失。
    【解决方案2】:

    看看 Debian (.deb) 和 Redhat (.rpm) 的包装材料。这是您的软件包的安装程序。它们并不难,您可以告诉它引用具有所需共享对象的其他包。

    打包工具通常可以修复缺少库等的包。它还将帮助您以不需要设置 LD_LIBRARY_PATH 或在可执行文件中放置 shell 脚本前端的方式放置二进制文件。

    它们也不难学。花一天时间玩每个,你会得到一个合格的安装包。

    【讨论】:

    • “无法访问最终运行时环境”使得打包有点棘手。
    • 如果您打算支持 Linux 的所有变体,而无需付出任何其他努力来要求准确交付,那么我只能说祝您好运。 =)
    【解决方案3】:

    有没有办法合理地确定这是否会起作用,而无需访问最终的运行时环境?

    一个人的环境可能与您的环境不同,即使它仍然是 Linux。因此,让您的程序面向最广泛受众的唯一可靠方法是发布源代码。

    【讨论】:

      【解决方案4】:

      难道你不能只是将所有东西静态链接到一个超大质量黑洞^W^W 二进制文件中吗?

      【讨论】:

        猜你喜欢
        • 2023-03-19
        • 2013-03-04
        • 1970-01-01
        • 2020-11-26
        • 2018-01-06
        • 2012-03-08
        • 2012-07-19
        • 2018-04-23
        • 1970-01-01
        相关资源
        最近更新 更多