Aygıt derlenirken Apple Mach-O Bağlayıcı Hatası


238

Ben sadece xcode 4.0'a yükseltme yaptım ve artık iPhone'a dağıtamıyorum, bir Apple Mach-O Bağlayıcı Hatası alıyorum, yine de simülatör için çalışıyor.

    Ld /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel normal armv7
    cd /Users/yveswheeler/iParcel
    setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
    setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -F/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -filelist /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel.LinkFileList -dead_strip -all_load -ObjC -lxml2 -miphoneos-version-min=3.2 -framework UIKit -framework CoreGraphics -framework QuartzCore /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a -framework AddressBook -lz.1.2.3 -framework Foundation -framework CFNetwork -framework MobileCoreServices -framework SystemConfiguration -framework MessageUI -framework AudioToolbox -o /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel

arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a: No such file or directory
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 failed with exit code 1

38
Ne halt?! Aynı hata mesajı için çok farklı problemler . Aferin Apple!
Iulian Onofrei

18
"HATA: Bir Hata oluştu" daha yararlı olacaktır :))
Aviram Netanel

Bağlayıcının hatadan önce tükettiği uyarılara bakın; daha iyi / daha spesifik bir çözüme yol açabilir.
Pro Q

Yanıtlar:


216

İşte kalıcı çözüm.Genellikle üzerine yazma projesi bu prolemlara neden olabilir.Bu yöntemi deneyin.

-UPDATE - Clang hatası - Mach-O Bağlayıcı hatası

Bazı durumlarda, düzeltmek için .xctest hatası görüntüleyen hata günlüğü penceresi

-> Projenizi seçin

-> Bunun yanında (Genel sekmesinden hemen önce) açılır menüden projenizi test edin

-> Bir seçenek var (ProjNameTest'ler gibi)

-> Ana Bilgisayar Uygulamasında, projenizi yalnızca özel gösteriliyorsa açılır listeden seçin

YAPILAN!

resim açıklamasını buraya girin

Eski yöntem silindi


4
Framework arama yolunu
alıp almadığımdan kaldırırsam

62
Sanırım anlamıyorum. Ne yapmalıyım…?
fabian

1
@fabian Sadece atlayın ve alternatif çözümü deneyin :-)
Gajendra K Chauhan

4
Günümü kurtardım adamım. Patronumun önünde otururken, ona üzerinde çalıştığım uygulamayı göstermek zorundayım ve bu linker hatasını aldım. Buraya
gelmediysem

2
son adımda ana bilgisayar uygulaması nerede?
Kartiikeya

195

Aynı sorunu yaşadım ve sorun yanlışlıkla bir uygulama dosyasında .h yerine bir .m dosyası içe aktarmıştım - umarım yardımcı olur


1
Hata bulmak imkansız! Her bir çözümü deneyin
AsifHabib

Bu doğru değil, aynı şeyi yeni bir projede denedim ve hala aynı hatayı alıyorum.
Hemang

Proje ayarları ve Derleme aşamaları bölümüne gidin, "Paket Kaynaklarını Kopyala" bölümünde "Kaynak Derleme Kaynakları" yerine .m dosyanızın olmadığından emin olun. benim için çalıştı
LuAndre

Çözümü bulmak imkansız. Ne yapacağımı bilmiyorum ...
Markus

Hayatımı kurtardın. Çok teşekkür ederim!
Isaac

73

Sadece aynı sorunla karşılaştı.

Çözüm (benim için) = çerçevelerinizi kontrol edin.

Benim durumumda, "CoreData.framework" olmadan CoreData ile ilgili sınıflar ekledim. Eklenmesi MACH_O şikayetini çözdü.


6
En son SDK sürümünde bulunmayan bir kütüphaneyi tekrar bağladığınızda da olur. Diyelim ki libz.1.2.3 ile bağlantı kurdunuz ve sdk 1.2.5 içeriyor. Çerçevelerinizi kontrol etmek gerçekten iyi bir öneri! Teşekkürler Dante!
SlowTree

Teşekkürler SlowTree, öneri kaydet bu linker çökme ile benim deneyim çözüldü. libz.1.2.3 ila libz.1.2.5;
Tom Pace

2
Cocoapods libPods.abenim için iki dosyayı birbirine bağladı (dolayısıyla çift semboller). Teşekkürler Dante!
Nick Merrill

Evet. .A dosyaları kaldırıldı ve bağlayıcıdan tekrar eklendi. Çalıştı!
Balasubramanian

61

.xcworkspace dosyasını değil .xcodeproj dosyasını açın. Açık .xcworkspace dosyasını tekrar ediyorum. Tüm hatalarınız ortadan kalkacak.


1
Vay canına, bu en çılgın hata ayıklama mesajlarından biri olmalı. Kelimenin tam anlamıyla bu sağlanan iletiye dayalı nedeni olduğunu tahmin asla.
Joseph Casey

1
Benim için hile yaptı çünkü harici bir kütüphane .xcodeproj'a dahil edilmedi. cocoapods ile ilgili
Sjoerd de Wit

Bu benim için çalıştı. @SjoerddeWit'in dediği gibi - cocoapods'un dahil edilmesi .xcodeproj yerine .xcworkspace açılmasını gerektirir.
Cody Richmond

Günümü kurtardım! +1
Bruno Monteiro

Bir birlik projesini xcode'a aktardım ve .xcworkspace dosyası yok
Ayush Malviya

36

Re: Başlığında belirtildiği gibi sorun:

Herkesin bariz olanı kaçırması durumunda ...

Xcode4'ün yeni bir sürümünü yükledikten ve mevcut dosyaları yeni bir projeye sürükledikten sonra bu hatayla karşılaştım. 'Dosya eklemek için seçenekler seçin:' iletişim kutusunda 'hedeflere ekle' onay kutusunun işaretlenmediğini fark edemedim. Hedefler> Derleme Aşamaları> Kaynakları Derleme'deki ihmalimi düzeltmek sorunu çözdü.


Bu numara benim için çalıştı. Teşekkürler. Tüm derleme dizinlerini sildim ve projeyi yeniden inşa ettim.
Vivek Gyaneshwar

34

Menü> Ürün> Temiz, çalışmasını sağlayan şey bu. Diğer herkesten emin değilim. Göstermek için resim ekledim.

resim açıklamasını buraya girin


1
Muhteşem. Bulabildiğim en kolay çözüm.
Vincent van Leeuwen

29

Tuhaf hata. Benim için Xcode'u temizledim ve yeniden başlattım ve sorun ortadan kalktı.



24

Bu cevapların hiçbiri bana yardımcı olmadı. Sonra Cocoapod'ları yeniden yüklemeye çalıştım:

pod deintegrate

pod install

Sorun çözüldü!


Pods & xcode ile bağlantı kesildiğinden emin değilim ama çoğu kez bakla dosyalarının türetilmiş veri klasörüne ulaştığından emin olmak için bir mücadele. Bu sorunu çözüyor gibi görünüyor. Keşke sadece bu yanıta başlayabilsem ..
Jacksonkr

20

Sorun, XCode 4'te, bağımlılıkların, daha önce XCode 3'te yaptıkları gibi, ana projenin mimari ayarlarını almamasıydı.


2
teşekkür ederim! Bağlayıcıdan gelen hata mesajının "Dosya bulunamadı" değil, "Dosya Bulunamadı" dan şikayet ettiği gerçeğiyle yanıltıldım ve kütüphane araması arayan xcode ayarları arasında dolaşıyordum yolları. Ama bu benim için çalıştı. Ve bu sorunu yaşıyorsanız, bu diğer yazı da ilgili: stackoverflow.com/questions/2999844/three20-and-ios-4 . Ayrıca, bu güzel özet blog: amirnaor.com/?p=112
Rob

13

Ben de aynısını yaptım ve çözmeyi başardım.

Xcode tercihlerinde, konum sekmesi derleme konumu altındaki değeri "olarak değiştirir Place build products in locations specified by targets".


Teşekkürler Wolfert, bunu denedi ama hala 1250 Apple Mach-O Linker Uyarısı var ve ilerleme yok. Bunu düzeltmek için başka bir şey yaptın mı? Şerefe

Teşekkürler Wolfert! çok zamanımı kurtardın.
Sunil Targe

6
Seçenek XCode 5.1'de mevcut değil
Hemang

13

Bir süre bununla mücadele ettim ve benim durumumda, Arama Yolları altında FRAMEWORK_SEARCH_PATHS adı verilen Yapı Ayarı oldu. Proje, hedef ve "Çözüldü" ayarlarımı karşılaştırmış gibi görünen "Düzeyler" düğmesini seçmemde yardımcı oldu. Hedef ayarımın "$ (devralınan)" varsayılanını bir şekilde geçersiz kıldığını gördüm ve geçersiz kılınan değer XCode'un ayarı "çözdüğü" şeydi. Bu durumda 3.2 sdk belirtilen geçersiz kılmayı kaldırdığımda, bazı son zamanlarda 4.0 sonrası yöntemlerini çağırdığım herhangi bir sınıf hakkında uyarılar olduğu gibi linker hataları ortadan kalktı.

Bu uyarılar hakkında - Yakın zamanda yapılan bir değişiklik için MessageUI çerçevesini eklemeden önce bunları hiç görmedim. Şüpheliyim, ancak emin değilim, bu çerçeveyi eklediğimde, XCode'un bu geçersiz kılmayı hedefime ekleyerek akıllıca bir şey yapmaya çalıştığını biliyorum. Bunu hiçbir noktada açıkça yapmadım. Uyarılar, örneğin, sdk 4.0'a kadar görünmeyen NSURL'nin URLByAppendingPathComponent yöntemi hakkındaydı. MessageUI çerçevesini eklemeden önce bu uyarıyı hiç almadım. Ve geçersiz kılmayı kaldırdığımdan, artık onları alamıyorum.



8

CordovaLib.xcodeproj'da "Yalnızca Etkin Mimariler Oluştur" seçeneğini Evet olarak değiştirmek -> Oluşturma Ayarları hile yaptı. daha önce uygulama simülatörde çalışıyordu, ancak cihazda çalışmıyordu.


7

Derleme ayarlarınızı güncellemeniz gerekebilir.

XCode 4 ile eski SDK'larınız olmayabilir, iOS hedef sürümünü ve işlemci mimarilerini doğrulayın.

Derleme ayarlarında «Eksik SDK» görebilirsiniz. Geçerli olanla değiştirin.


Bu, xcode'u her yükselttiğimde yaptığım ilk şey. Bu sefer sorun değil.
CodeVomit

7

Aynı sorunu yaşadım: .h projedeyken bir .m dosyasını yanlışlıkla sildim. .M dosyasını geri yüklediğimde sorun kayboldu.


6

Belirli bir çerçeve arama yolunun belirtilmediğinden emin olun. hedef üzerindeki bilgilere gidip yalnızca çerçeve arama yolu girdilerini kaldırırsanız, belirttiğiniz dağıtım sürümü için varsayılanları kullanması gerekir.


5

Ben sadece bir category classdosya oluşturmaya çalışıyorum ve bu garip sorunu var .. ve sonunda ....

Soruna neden olan kategori sınıfı oluşturmanın yanlış yolu:

New File-> Cocoa Touch-> Objective-C class, o zaman için dosyaların adını modifiye gibi Kategorisi Sınıf ismi .. (yani OriginalClass_CategoryName.h/miçinOriginalClass+CategoryName.h/m ve aynı zamanda dosyadaki içeriği değiştirilmiş).

Burada doğru yol:

New File-> Cocoa Touch-> Objective-C categoryve otomatik olarak dosya oluşturur ( OriginalClass+CategoryName.h/m).

Ah, ne kadar aptalım !!


5

CoreData kullanıyorsanız ve varlıklarınız için NSManagedObject alt sınıfları oluşturmak için XCode kullanıyorsanız, her varlık için yalnızca bir tane oluşturduğunuzdan emin olun.

Benim sorunum, aynı varlık için birden çok NSManagedObject alt sınıfları (ve onları farklı klasörlere koymak) üretti.

Sadece hepsini sildim ve NSManagedObject alt sınıflarını yeniden oluşturdum.


5

Bu sorunu gideren garip şeyler listesine eklemek için ...

Ben böyle küresel bir başlık dosyasında bazı const CGFloat değişkenleri vardı

const NSInteger  globalInteger1 = 2;
const NSInteger  globalInteger2 = 3;

Bunları kaldırdığım anda her şey yolundaydı :)


1
WEIRD sorunum .pch veya constants.h dosyasında NSString * const kInitiaNotification = @ "kInitialNotification"; ilk başta "statik"
ten

Ben değiştirildi hemen sonra sorunu vardı NSString static *key = @"someKey"içinconst NSString *key = @"someKey"
TonyTony

5

Tam olarak aynı problemi yaşadım, çünkü farklı sınıflarda iki sabitim vardı. .H dosyasını değil .m dosyasını alırsanız da bu sorunu yaşayabilirsiniz.


Sen benim günümü kurtar!
teck wei

D: @teckwei Eğer upvote ok tuşuna basabilirsiniz
Adela Toderici


4

Aynı problemi yaşadım ve çözdüm. Benim durumumda, "mimariler" ayarı soruna neden oldu. Proje dosyamda, Oluşturma Ayarları sekmesinde Mimariler armv6 olarak ayarlandı. Standart (armv7) olarak değiştirdim, temizle ve inşa et. Sonra işe yaradı!


4

Benim durumumda, sorun farklı hedefler altında farklı mimariler belirtiyordu. Uygulama hedefimi armv6, armv7 ve cocos2d ile Standard (amrv7) ile oluşturuyordum. Yapılandırma ayarlarına gidin ve mimarlarınızın tüm hedefleri kabul ettiğinden emin olun.


4

Bu sorunu çok garip buldum!

Hedef > Aşama Oluştur > İkili Kitaplıklarıyla Bağlantı Oluştur'a gidin :

Tüm çerçevelerinizi kaldırın ve tekrar ekleyin!

Umarım sizin için çalışır!


oldukça korkunç bir çözüm
SleepsOnNewspapers

Cevap olamıyor ... çok mantıklı değil
LKM

Hata mesajını kontrol ettim ve çerçevelerden biri olduğunu gördüm, bu yüzden bu çerçeveyi kaldırdım ve tekrar ekledim, tüm çerçeveleri değil, sadece o çerçeveyi.
Oluwatobi Omotayo

4

Swift dili için ...

Bu hatayı alıyorum "ld: dosya çok küçük (uzunluk = 0) ...."

Benim durumumda sadece projeyi temizleyip yeniden inşa ediyorum.

Adımlar: -

1) Projeye Git -> Temizle

2) Projeye Git -> İnşa Et

Bu yardımcı olur umarım..


Benim için çalıştı. Cihazı iPhone 6'dan iPhone 4S'ye değiştirdiğimde oldu.
racl101

Benim için de çalıştı. Çok teşekkürler
Lee

4

Bu benim için bir hile yaptı:

Adresine git

1) Ürünler> temiz

2) Windows> Projeler

3) Projenizi seçin ve türetilmiş Verileri " Sil " e tıklayın

4) Ürünler> Yapı


3

Bir olasılık: Xcode 4 derleme ayarlarında "Dead code stripping" i açın.

Başka bir olasılık: Daha önce GCC kullanan bazı çerçeveler için LLVM kullanmaya geçmiş olabilirsiniz. GCC'ye (veya LLVM GCC) geri dönmek bu uyarılardan kurtulabilir.


3

Yanlışlıkla farklı bir dosyadaki mevcut bir sabitle aynı ada sahip yeni bir sabit tanımladım ve bu hata xCode 4.3.1 kullanarak benim için neden oldu. xCode şikayet etmedi ama derleyici bundan hoşlanmıyor.


3

"Kütüphane Arama Yolları" nı düzenleyerek bu hatayı düzeltebildim

İlk etapta kırpılmıştı çünkü birkaç klasörü hareket ettirmiştim ve bu, bir kütüphane / çerçeveyi bağladığınızda derleme ayarlarınıza otomatik olarak eklendikleri için derleme ayarlarıma iki farklı arama yolu verdi, ancak bunlar her zaman kaldırıldı.

Dolayısıyla, bağlantılı bir kitaplığı / çerçeveyi farklı bir dizine taşır ve yeniden bağlarsanız, arama yolunu manuel olarak düzenlemeniz gerekir.

Kütüphaneyi / çerçeveyi taşımadan önce kaldırarak bunu atlatabilirsiniz, ancak bunu test etmedim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.