【问题标题】:Will statically linked executables work across OSX machines静态链接的可执行文件是否可以跨 OSX 机器工作
【发布时间】:2016-02-27 00:11:28
【问题描述】:

在 OS X 下编译的静态链接可执行文件在简单地复制到另一台 OS X 机器时是否可以工作?

【问题讨论】:

    标签: macos linker static-linking


    【解决方案1】:

    没有。引用苹果的文章“Statically linked binaries on Mac OS X”:

    Apple 不支持 Mac OS X 上的静态链接二进制文件。静态链接二进制文件在内核系统调用接口上假定二进制文件兼容,我们在这方面不做任何保证。

    确实,尝试使用 Xcode 工具链构建静态可执行文件会产生错误:

    sh% cc -static example.c -o example
    ld: library not found for -lcrt0.o
    

    【讨论】:

    • 谢谢。分发 OSX 二进制文件的最佳实践是什么?我应该如何将我的可执行文件传递给其他人以便他们可以运行它们?
    • 适用于桌面应用程序,还是独立的二进制文件?
    • 动态链接操作系统提供的任何库。对于非标准库,您需要将它们静态链接(与静态链接整个二进制文件相同!),或者在可执行文件中包含动态库。在后一种情况下,相对于 @rpath 的链接可能会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-06-07
    • 2013-06-24
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2010-12-16
    相关资源
    最近更新 更多