【问题标题】:.o files in Linux and Mac OS XLinux 和 Mac OS X 中的 .o 文件
【发布时间】:2016-03-23 21:39:49
【问题描述】:

我不确定我应该在哪里问这个问题,如果堆栈溢出不是最好的地方,请原谅。

我的问题是,在 Linux 上使用 gcc 生成的 .o 文件和在 Mac OS X 上生成的 .o 文件之间是否有任何区别。如果是这样,究竟有什么区别,为什么我不能在 Linux 上使用一个Mac 还是相反?

【问题讨论】:

  • 取决于用于生成它们的编译器。如果两边都是gcc,那么它们应该是“相同的”

标签: linux macos unix gcc


【解决方案1】:

它们完全不同。 OS X 使用 Mach-O 目标文件格式。 Linux 使用 ELF 对象文件格式。它们执行相同的通用目的,但方式完全不同。

【讨论】:

  • 即使它们是相同的格式,它们也不一定可以互换,因为操作系统 ABI 不同。 SVR4 也使用 ELF 格式,但不能在 Linux 上使用 SVR4 目标文件。
【解决方案2】:

以 .o 结尾的文件是目标文件。编译器为每个源文件创建一个目标文件,然后将它们链接到最终的可执行文件中。 Mac OS 基于 BSD 代码库,而 Linux 是独立开发的类 unix 系统。这意味着这些系统是相似的,但不是二进制兼容的。要使其正常工作,请在您将使用的操作系统上编译代码。

阅读有关二进制代码兼容性的更多信息: https://en.wikipedia.org/wiki/Binary_code_compatibility

【讨论】:

    猜你喜欢
    • 2013-04-27
    • 2012-12-14
    • 1970-01-01
    • 2010-12-29
    • 2013-05-04
    • 1970-01-01
    • 2012-03-05
    • 2011-06-01
    • 2017-06-02
    相关资源
    最近更新 更多