Dosya evrenseldir (üç dilim), ancak yine de atlamak için iOS'ta statik kütüphaneler için (n) ARMv7-s dilim hatası içermiyor mu?


403

Xcode sürümünü yükselttim ve harici statik kütüphaneler kullanırken şu mesajı alıyorum:

ld: dosya evrenseldir (3 dilim) ancak bir (n) armv7s dilimi içermez: / dosya / mimari için konum armv7s clang: hata: linker komutu çıkış kodu 1 ile başarısız oldu (çağrıyı görmek için -v kullanın)

Bunu atlamanın ve kütüphanenin geliştiricisi henüz kütüphanelerini güncellemediyse kütüphaneye destek eklemenin bir yolu var mı?


Bu şimdilik iyi bir çözüm gibi görünüyor - galloway.me.uk/2012/09/hacking-up-an-armv7s-library
Rajavanya Subramaniyan

Yanıtlar:


418

Herhangi bir mimarinin desteğini kaldırmak istiyorsanız, örneğin, sizin durumunuzdaki ARMv7-s , Project -> Build Settings -> mimarisini "geçerli mimarilerden" kaldırın.

Kütüphane güncellenene kadar bunu geçici bir çözüm olarak kullanabilirsiniz. Mimariyi kütüphanenizden değil ana projenizden kaldırmalısınız.

Alternatif olarak, hata ayıklama yapılandırmanızın "Yalnızca Etkin Mimari Oluştur" işaretini Evet olarak ayarlayabilirsiniz. Yayın yapılandırmasının "Yalnızca Etkin Mimari Oluştur" seçeneğini Hayır olarak bırakın, böylece kullandığınız üçüncü taraf kitaplıklarını yükseltmeniz gerektiğini serbest bırakmadan önce bir hatırlatma alırsınız.


11
kütüphaneyi yeniden derlemenize gerek yoktur. bu bayrağı kitaplığı kullanan projeden kaldırabilirsiniz.
Nicholas

4
Armv7s desteği ile derlenmemiş eski uygulamaların da çalışması gerektiğinden çalışır. Ancak bazı belirli optimizasyonları kaybedeceksiniz. Bu zaten geçici bir çözüm olmalıdır.
Nicholas

2
Dropbox çerçevesi bakın bu soruna yönelik güncellendi forums.dropbox.com/topic.php?id=90014
railwayparade

6
Armv7'leri Geçerli Mimariler listesinden kaldırmak benim için çalıştı, ancak Mimarlardan kaldırıldı. Ancak her iki durumda da, No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).sadece i386Geçerli Mimariler listesine ekleyerek çözebileceğim bağlayıcıdan alacağım .
levigroker

6
Hayır, armv7s, iPhone 5'te kullanılan A6 işlemcisinin yönerge setidir. A6 geriye dönük olarak uyumlu olduğundan, armv7 yönerge setini çalıştırmaya devam edecektir.
Nicholas

191

Hedefin oluşturma ayarlarında "Yalnızca Aktif Mimari Oluştur" seçeneğini "Evet" olarak değiştirdim ve şimdi sorun yok!


1
@ Blasco73 Harika olduğunu bile biliyor musun? Malısın. İşte gidiyor, efendim!
thandasoru

15
Bu nasıl iyi bir çözüm olabilir? Hatayı kaldırır, ancak sadece mevcut kemer için inşa edersiniz, tüm piyasada değil ...
esbenr

27

İOS 5.1 telefon için bu sorundan kurtulmak için armv7'leri projenin "Geçerli mimarisinden" kaldırmaya çalışın


13

Sadece bir düzeltme yayınlanmıştır burada da bu durumda geçerli olacak - temelde, bunu o 's ARMv7s kodunu düşünmek bir onaltılık yapmak için harici kütüphanede bulmak ve değiştirme yapmak. Kullanılacak gerekir lipokullanmak sonra, ARMv7 bir değiştirme /, 3 statik kütüphaneler içine kırmak için yinelenen lipoTüm 4 mimarileri için yeni bir kütüphane montajı tekrar.


5

İPhone 5 için Flurry Desteği (ARMv7s) Dünkü yazımda belirttiğim gibi Flurry, Çarşamba günü yapılan duyurudan hemen sonra yeni iPhone 5'te ARMv7s işlemcisini desteklemek için iOS SDK'nın bir sürümü üzerinde çalışmaya başladı.

Size işin yapıldığını ve SDK'nın artık sitede mevcut olduğunu söylemekten mutluluk duyuyorum.


4

Project -> Build Settings -> menüsünü kullanın

daha sonra armv7'leri "geçerli mimarilerden" kaldırın. Standart seçilmişse, silin ve ardından armv7'yi ekleyin.


1

Bu birinin başına gelmesi durumunda. Üçüncü taraf koduyla kullanmak için kendi kütüphanemi oluşturdum. Teslim etmek için inşa ederken, iPhone 4S'imi yanlışlıkla takılı bıraktım ve bu nedenle Xcode kütüphanemi proje ayarlarını takip etmek yerine sadece takılı mimari için oluşturdu. Takılı tüm aygıtları çıkarın ve kitaplığı yeniden oluşturun, bağlayın ve iyi durumda olmalısınız.

Umarım yardımcı olur.


0

Benim durumumda, biraz eski bir üçüncü taraf kütüphanesine bağlıyordum (iOS 6 için XCode 5 / iOS 7'de geliştirildi). Bu nedenle, üçüncü taraf kitaplığını güncellemem, bir Temizle ve Oluştur yapmam gerekiyordu ve şimdi başarıyla oluşturuluyor.

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.