2011-06-09 1 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 

Как исправить эту ошибку?Ошибка компоновщика в Xcode 4.2 Предварительный просмотр разработчика

Это очень странно - я собираю сборку для iOS, но получаю сообщение об установке цели развертывания Mac OS.

ответ

3

Обновите версию libz dylib в своем проекте, независимо от того, что предоставляет XCode 4.2. Если вы компилируете один и тот же код для разных целей, проверьте версию библиотеки на каждом из них.

С SDK 3.2 все версии libz являются символическими ссылками на последнюю версию (libz.1.2.3 в SDK 4.3), поэтому независимо от того, какую версию libz вы выберете, вы получите последнюю. См. /Developer/Platforms/iPhoneOS.platform/DeviceSupport/Latest/Symbols/usr/lib.

Я не знаю, что сделает Apple в будущем. Если вы ссылаетесь на libz, вы, вероятно, будете поддерживать связь с последней версией. Изменение основного номера библиотеки (libz-X) может нарушить совместимость, поэтому более безопасный выбор заключается в том, чтобы поддерживать связь с той же версией, что и сейчас. Твой выбор.

43

Не следует указывать libz.dylib. Правильная версия автоматически используется.

+0

Этот ответ был бы значительно улучшен, если бы вы могли указать на соответствующие документы, которые указывают, что привязка к не зависящей от версии dylib будет автоматически использовать последнюю. – memmons

+3

Использование символических ссылок для замещения незначительных изменений номера версии - это соглашение, которое использовалось до тех пор, пока существуют общие библиотеки. Это вездесущий и древний. Вы также можете спросить, где находится документация, которая определяет/как разделитель путей по умолчанию - я уверен, что он похоронен где-то в глубине какого-то стандарта UNIX, но я не думаю, что это особенно полезно для добавления к этому ответу. Не стесняйтесь редактировать мой ответ, если вы хотите потратить время на его разработку. – Jim

+1

Спасибо за разъяснение. Я спросил, потому что, не исходя из фона C++, я думал, что это может быть Xcode. Кстати, я уже поддержал ответ. – memmons