2016-03-23 22 views
0

Bunu sormam gereken yere emin değilim, bu yüzden yığın taşması en iyi yer değilse, özür dilerim..o dosyaları

Sorun şu ki, Linux'ta oluşturulmuş bir .o dosyası arasında Mac OS X'te gcc ve bir .o dosyası kullanılarak herhangi bir fark var mı? Eğer öyleyse, tam olarak farklılıklar nelerdir ve neden Linux'tan birini kullanamıyorum? Mac veya tam tersi mi?

+0

bunları üretmek için kullanılan derleyiciler bağlıdır. Eğer her iki tarafta gcc ise, o zaman "aynı" olmalıdırlar –

cevap

2

Bunlar tamamen farklı. OS X, Mach-O nesne dosyası formatını kullanır. Linux ELF nesne dosya formatını kullanır. Aynı genel amacı ancak tamamen farklı şekillerde gerçekleştirirler.

+0

Aynı formatta olsalar bile, işletim sistemi ABI'leri farklı olduğu için birbiriyle değiştirilebilir olmayabilirler. SVR4 ayrıca ELF formatını kullanır, ancak Linux'ta bir SVR4 nesne dosyasını kullanamazsınız. – Barmar

0

.o ile biten bir dosya bir nesne dosyasıdır. Derleyici, her bir kaynak dosya için, bir araya getirilmeden önce, son yürütülebilir dosyaya bir nesne dosyası oluşturur. Linux bir BSD kod tabanına dayanırken, Linux unix benzeri bir sistemin bağımsız bir gelişmesidir. Bu, bu sistemlerin benzer olduğu, ancak ikili uyumlu olmadığı anlamına gelir. Bunu kullanmak için kullanmakta olduğunuz işletim sistemi üzerinde kod derlemek.

ikili kod uyumluluğuna daha fazla bilgi: https://en.wikipedia.org/wiki/Binary_code_compatibility