我不确定我应该问这个问题,如果堆栈溢出不是最好的地方,请原谅。
我的问题是,在使用gcc的Linux上生成的.o文件和Mac OS X上的.o文件之间是否存在任何差异。如果是这样,有什么区别,为什么我不能在Linux上使用Mac或反之亦然?
答案 0 :(得分:3)
他们完全不同。 OS X使用Mach-O目标文件格式。 Linux使用ELF目标文件格式。它们以完全不同的方式执行相同的一般目的。
答案 1 :(得分:0)
以.o结尾的文件是目标文件。编译器在将每个源文件链接在一起之前为每个源文件创建一个目标文件到最终的可执行文件中。 Mac OS基于BSD代码库,而Linux是类Unix系统的独立开发。这意味着这些系统是相似的,但不是二进制兼容的。要使其正常工作,请编译将要使用的操作系统上的代码。
详细了解二进制代码兼容性: https://en.wikipedia.org/wiki/Binary_code_compatibility