我不知道我應該問這個問題,所以如果堆棧溢出不是最好的地方,請原諒我。.o在Linux和Mac OS X中的文件
我的問題是,如果在Linux上使用gcc生成的.o文件與Mac OS X上的.o文件有任何區別。如果是這樣,那麼究竟有什麼區別,爲什麼我不能使用Linux在Mac上或反之亦然?
我不知道我應該問這個問題,所以如果堆棧溢出不是最好的地方,請原諒我。.o在Linux和Mac OS X中的文件
我的問題是,如果在Linux上使用gcc生成的.o文件與Mac OS X上的.o文件有任何區別。如果是這樣,那麼究竟有什麼區別,爲什麼我不能使用Linux在Mac上或反之亦然?
它們完全不同。 OS X使用Mach-O目標文件格式。 Linux使用ELF對象文件格式。它們以完全不同的方式執行相同的通用目的。
即使他們是相同的格式,它們不一定是可互換的,因爲操作系統ABI的不同。 SVR4也使用ELF格式,但不能在Linux上使用SVR4目標文件。 – Barmar
在的.o結尾的文件是一個對象文件。編譯器爲每個源文件創建一個目標文件,然後將其鏈接到最終的可執行文件中。 Mac OS基於BSD代碼庫,而Linux是獨立開發的類Unix系統。這意味着這些系統是相似的,但不是二進制兼容的。爲了讓它工作,請編譯您將使用的操作系統上的代碼。
瞭解更多關於二進制代碼兼容性: https://en.wikipedia.org/wiki/Binary_code_compatibility
取決於用於生產該等產品的編譯器。如果是雙方的gcc,那麼他們應該是「相同的」 –