2012-10-26 34 views
13

Çok sayıda Match-O linker hatasından yorulduktan sonra, bu şeyin anlamı olduğunu bilmek istiyorum. Deneme ve hata çözümü yerine, bu şeylerin arkasındaki kavramı bilmek isterim. Özellikle ben arasındaki farkı bilmek istiyorum:Xcode projesi hedef oluşturma ayarlarında, Mach-O Tipi nedir?

  1. Executable
  2. Dinamik Kütüphane
  3. Paketi
  4. Statik Kütüphane
  5. Bu seçenekler sunulmaktadır

Değiştiren Nesne Dosya Tıkladığımda Bağlantı bölümünde Mach-O Tipi ayarlarında. Bazı küçük tanımlamalar veya uygun içeriğe linkler de iyi. Mach nesnesi dosya formatı için kısa olan, dosya nesnesi, paylaşılan kitaplıklar, dinamik olarak yüklenen kod ve çekirdek dökümleri için bir dosya formatıdır.

+3

https: // developer.apple.com/library/mac/#documentation/developertools/conceptual/MachOTopics/1-Articles/building_files.html – iDev

cevap

22

Mach-O. Unix kullanıcıları için bu, a.out gibidir, ancak iyileştirmelerle. Bu, Mac OS X ve iPhone OS kitaplıklarında yürütülebilir dosyalar için kullanılan formattır.

Bildiğiniz gibi iOS aygıtlarının (iPhone, iPad vb.) Farklı mimarileri var ARMv6 (iPhone 2G + 3G, iPod Touch) ve ARMv7 (iPhone 3GS, iPod Touch 2G + 3G), ancak Xcode'da kullanılan simülatörler çoğunlukla çalışır. i386 platformu. Bu, kütüphane istemcilerinin simülatör ve cihaz için ayrı hedefler ayarlaması gerektiği anlamına gelir. Ayrı hedefler çoğu bilgiyi çoğaltır ve sadece içerdiği statik kütüphanelerde farklılık gösterir. Yani bir Mach-O linker hatası alıyorsanız, bunun anlamı, xcode'un o hedef cihaz için kütüphanelerden birine bağlanmada sorun yaratmasıdır; bir sonucu olarak derleme başarısız olur. Şimdi

senin tanımları -

  1. yürütülebilir - derlenmiş makine hedeflenen programın hazır ikili formatta çalıştırılmak üzere.
  2. Dinamik Kitaplık - çalışma zamanı sırasında bağlanır - bir dinamik kitaplığa başvurular içeren bir program yüklenirken (veya isteğe bağlı olarak) kitaplık ile yüklenir ve bağlantı kurar.
  3. Paketler - ve paket tanımlayıcısı iOS ve OSX'in uygulamanıza yapılan güncellemeleri tanımasına izin verin. Bu uygulamada benzersiz bir varlık verir.
  4. Statik Kitaplık - dosyalar yapım zamanında bağlanır. kod yürütülebilir dosyaya kopyalanır. Kitaplığınızdaki program tarafından başvurulan kod kaldırıldı. Sadece durağan kütüphaneleri olan bir programın çalışma zamanı boyunca herhangi bir bağımlılığı yoktur.
  5. Değiştirilebilir Nesne Dosyası - bir dinamik kitaplık için başka bir kelimedir. Bir dinamik kitaplık ile bağlandığınızda, içerdiği işlevlerin adresleri, belleğin belleğe yüklendiği yere göre hesaplanır. Bunlar "yeniden yüklenebilir" dir, çünkü içerilen fonksiyonların adresleri bağlantı zamanında belirlenmez. (Statik kütüphanesinde, adresler bağlantı süresi boyunca hesaplanır.) Elma belgelerine gereğince
+0

Benzer bir konu hakkında tavsiyenizi araştırıyorum ve size nasıl ulaşacağımı bilmiyorum. İsteğiniz üzerine memnuniyetle bir soru göndereceğim. – Patricia

+0

"İndirilebilir Nesne Dosyası" nın dinamik kitaplık için başka bir kelime olduğundan emin misiniz? AFAIK, nesne dosyası (kullanıldığında statik olarak bağlanır - bu başka bir statik statik kitaplık şeklidir). Statik kütüphaneler birden fazla nesne içeriyor olsa da, yeniden yüklenebilen nesne dosyası tek bir nesnedir. – Krypton

+0

Sanırım, ELF'ye yeniden yüklenebilen nesne dosyasıyla aynı değil. Birisi kontrol edebilir mi? – Krypton