如果有用到libz.1.2.3.dylib這個framework(例如ASIHttpRequest Framework)
iOS SDK升級到5 beta會遇到下列錯誤:
ld: library not found for -lz.1.2.3
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
或是用了ASIHttpRequest Framework:
Undefined symbols for architecture i386:
"_crc32", referenced from:
_unzReadCurrentFile in unzip.o
"_inflateEnd", referenced from:
_unzCloseCurrentFile in unzip.o
-[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
"_inflate", referenced from:
_unzReadCurrentFile in unzip.o
-[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_get_crc_table", referenced from:
_unzOpenCurrentFile3 in unzip.o
"_inflateInit2_", referenced from:
_unzOpenCurrentFile3 in unzip.o
-[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
是因為libz.1.2.3.dylib到iOS 5後就升級到libz.1.2.5了
一個方法是把專案Link Binary With Libraries裡的
如果怕拿到別的機器跑得再改一次,可以把新的libz link到舊的,不動到專案就可以直接跑了
在command line下指令:
(將原先libz.1.2.3.dylib的參考改成libz.1.2.5.dylib)
sudo ln -s
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/libz.1.2.5.dylib /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/libz.1.2.3.dylib
iOS SDK升級到5 beta會遇到下列錯誤:
ld: library not found for -lz.1.2.3
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
或是用了ASIHttpRequest Framework:
Undefined symbols for architecture i386:
"_crc32", referenced from:
_unzReadCurrentFile in unzip.o
"_inflateEnd", referenced from:
_unzCloseCurrentFile in unzip.o
-[ASIDataDecompressor closeStream] in ASIDataDecompressor.o
"_inflate", referenced from:
_unzReadCurrentFile in unzip.o
-[ASIDataDecompressor uncompressBytes:length:error:] in ASIDataDecompressor.o
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_get_crc_table", referenced from:
_unzOpenCurrentFile3 in unzip.o
"_inflateInit2_", referenced from:
_unzOpenCurrentFile3 in unzip.o
-[ASIDataDecompressor setupStream] in ASIDataDecompressor.o
"_deflate", referenced from:
-[ASIDataCompressor compressBytes:length:error:shouldFinish:] in ASIDataCompressor.o
"_deflateInit2_", referenced from:
-[ASIDataCompressor setupStream] in ASIDataCompressor.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/llvm-g++-4.2 failed with exit code 1
是因為libz.1.2.3.dylib到iOS 5後就升級到libz.1.2.5了
一個方法是把專案Link Binary With Libraries裡的
如果怕拿到別的機器跑得再改一次,可以把新的libz link到舊的,不動到專案就可以直接跑了
在command line下指令:
(將原先libz.1.2.3.dylib的參考改成libz.1.2.5.dylib)
sudo ln -s
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/libz.1.2.5.dylib /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/usr/lib/libz.1.2.3.dylib