2011-06-09 20 views
16
d /Users/yariksmirnov/Library/Developer/Xcode/DerivedData/Goozzy-cugjuvvsrzjqwvfiicxtykbqagux/Build/Products/Debug-iphonesimulator/Goozzy.app/Goozzy normal i386 
cd /Users/yariksmirnov/Desktop/Goozy/branches/new 
setenv MACOSX_DEPLOYMENT_TARGET 10.6 
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" 
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/yariksmirnov/Library/Developer/Xcode/DerivedData/Goozzy-cugjuvvsrzjqwvfiicxtykbqagux/Build/Products/Debug-iphonesimulator -F/Users/yariksmirnov/Library/Developer/Xcode/DerivedData/Goozzy-cugjuvvsrzjqwvfiicxtykbqagux/Build/Products/Debug-iphonesimulator -filelist /Users/yariksmirnov/Library/Developer/Xcode/DerivedData/Goozzy-cugjuvvsrzjqwvfiicxtykbqagux/Build/Intermediates/Goozzy.build/Debug-iphonesimulator/Goozzy.build/Objects-normal/i386/Goozzy.LinkFileList -mmacosx-version-min=10.6 -Xlinker -objc_abi_version -Xlinker 2 -D__IPHONE_OS_VERSION_MIN_REQUIRED=40300 -framework CoreData -lz.1.2.3 -framework MobileCoreServices -framework SystemConfiguration -framework CFNetwork -framework QuartzCore -framework UIKit -framework Foundation -framework CoreGraphics -o /Users/yariksmirnov/Library/Developer/Xcode/DerivedData/Goozzy-cugjuvvsrzjqwvfiicxtykbqagux/Build/Products/Debug-iphonesimulator/Goozzy.app/Goozzy 

*ld: library not found for -lz.1.2.3* 
collect2: ld returned 1 exit status 
Command /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2 failed with exit code 1 

Bu hatayı nasıl düzeltirim?Xcode 4.2'deki Bağlayıcı Hatası 4.2 Geliştirici Önizleme

Çok garip - iOS için bir derleme yapıyorum ancak Mac OS dağıtım hedefi ile ilgili bir hata alıyorum.

cevap

3

XCode 4.2 ürününüzün sağladığı her ne olursa olsun, projenizin tanımındaki libz dylib sürümünü güncelleyin. Aynı kodu farklı hedefler için derliyorsanız, her birinde kitaplık sürümünü kontrol edin.

SDK 3.2'den bu yana, libz'in tüm sürümleri, en son sürümün (SDK 4.3'te libz.1.2.3) sembolik bağlarıdır; dolayısıyla, hangi libz sürümüne sahip olduğunuzdan bağımsız olarak, sonuncuyu alırsınız. /Developer/Platforms/iPhoneOS.platform/DeviceSupport/Latest/Symbols/usr/lib adresine bakın.

Gelecekte Apple'ın ne yapacağını bilmiyorum. Eğer libz ile bağlantı kurarsanız, bağlantıyı en son sürüme bırakmanız muhtemeldir. Kütüphanenin ana sayısındaki bir değişiklik (libz-X) uyumluluğun bozulmasına neden olabilir, bu yüzden şimdi sahip olduğunuz sürümün daha güvenli bir şekilde seçilmesi daha güvenli bir seçimdir. Senin seçimin.

43

libz.dylib'u belirli bir sürümde kullanamazsınız. Doğru sürüm otomatik olarak kullanılır.

+0

Versiyona özgü olmayan bir dylib bağlantısının en son otomatik olarak kullanılacağını belirten ilgili belgelere işaret ederseniz, bu yanıt büyük ölçüde geliştirilebilir. – memmons

+3

Küçük sürüm numarası değişikliklerini gizlemek için sembolik bağlantıların kullanılması, paylaşılan kütüphaneler olduğu sürece kullanılmış bir sözleşmedir. Her yerde ve kadim. Ayrıca, belgelerin nerede olduğunu/varsayılan yol ayırıcı olarak tanımladığını da sorabilirsiniz - eminim ki, bazı UNIX standartlarının derinliklerinde bir yere gömülü olduğundan, ama bu cevabı eklemek için özellikle aydınlatıcı olduğunu düşünmüyorum. Yine de kazmak için zaman harcamak istiyorsanız cevabımı düzenlemek için çekinmeyin. – Jim

+1

Netleştirdiğiniz için teşekkür ederiz. Çünkü sordum - C++ kökenli değil - Xcode'a özgü olabileceğini düşündüm. Btw, zaten cevabı bıktım. – memmons

İlgili konular