# Undefined symbols for architecture armv7

+关注继续查看

This problem has been driving me crazy, and i can't work out how to fix it...

    Undefined symbols for architecture armv7:
"_deflateEnd", referenced from:
-[ASIDataCompressor closeStream] in ASIDataCompressor.o
"_OBJC_CLASS_$_ASIDataDecompressor", referenced from: objc-class-ref in ASIHTTPRequest.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 armv7 collect2: ld returned 1 exit status Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1 I think it has to do with: ld: symbol(s) not found for architecture armv7 but I have added: libz.1.2.3.dylib and it's not helping, anyone got any ideas? - ## 28 Answers ### Common Causes The common causes for "Undefined symbols for architecture armv7" are: 1. You import a header and do not link against the correct library. This is common, especially for headers for libraries like QuartzCore since it is not included in projects by default. To resolve: • Add the correct libraries in the Link Binary With Libraries section of the Build Phases. • If you want to add a library outside of the default search path you can include the path in the Library Search Paths value in the Build Settings and add -l{library_name_without_lib_and_suffix} (eg. for libz.a use -lz) to the Other Linker Flags section of Build Settings. 2. You copy files into your project but forgot to check the target to add the files to. To resolve: • Open the Build Phases for the correct target, expand Compile Sources and add the missing .m files. If this is your issue please upvote Cortex's answer below as well. 3. You include a static library that is built for another architecture like i386, the simulator on your host machine. To resolve: • If you have multiple library files from your libraries vendor to include in the project you need to include the one for the simulator (i386) and the one for the device (armv7 for example). • Optionally, you could create a fat static library that contains both architectures. ### Original Answer: You have not linked against the correct libz file. If you right click the file and reveal in finder its path should be somewhere in an iOS sdk folder. Here is mine for example /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib I recommend removing the reference and then re-adding it back in the Link Binary With Libraries section Build Phases of your target. - It may also be because you need to add the word "-licucore" in project settings / Other Linker Flags. It was added automatically for my debug build but not the release one so wouldn't compile. – JulianB I had the same issue. Didn't really read the install notes properly so hadn't noticed that the new version of bugsense needs libz binary added in the build phases. – Max MacLeod Nov 8 '12 at 9:33 This is by far the most useful post on StackOverflow! Thank You! – Asciant Apr 7 '13 at 0:23 Are you sure that you've included an @implementation section in your respective .m file for all classes you've declared in your header file? – slcott Jun 13 '13 at 2:27 I just want to add I think it was really respectful of you to reference another answer to this question and tell us to up vote it if that helped. – Andrew Sep 16 '13 at 0:03 I had a similar issue last night and the problem, was related to the fact that I had dragged a class from the Finder to my project in Xcode. The solution was to go the the Build Phases tab and then the Compile Sources and make sure you drag the class to the list. - THANK YOU! (How is XCode allowed to be this crap?) – Reuben Scratton May 9 '12 at 18:30 I owe my sanity to you – Julian Coltea Jul 23 '12 at 18:48 I wish I had realized this was the answer I was looking for earlier- Alternatively you can make sure to check 'Add to targets' when copying classes. – T. Markle And another life saved! I would like to express my deepest gratitude! – Eduardo Nov 13 '12 at 10:00 Another way to fix this is select file that is said to be missing. and open the "Utilities" slide out bar. (Thats the far right one) And choose the "File Inspector". Then make sure there is a check in the project under "Target Membership". I'm using Xcode 4.6.2 – zingle-dingle May 7 '13 at 16:57 I had a similar issue and I had to check "Build Active Architecture Only" on each of the Project configurations (Debug, Release and Deployment) and in the Build Settings of the Target. - Also did the trick for me. Was just needed in the main project though. – Kirualex Oct 10 '12 at 10:20 it works for me! Thanks – VietHung Mar 31 at 3:42 Another possible cause of "undefined symbol" linker errors is attempting to call a C function from a .mm file. In this case you'll need to use extern "C" {...} when you import the header files. Linker error calling C-Function from Objective-C++ - You save me!!!! – alexqinbj May 21 '13 at 3:00 I had a similar issue with that. The class name after _OBJC_CLASS_$_ was actually my class. The reason was I didn't tick "Add to Target" when I drag the source code files into navigation list.

My solution was:

1. delete the class from the navigation list and choose "remove reference only"

2. drag the source code files again and make sure the tick box for "add to Target" is ticked. The tick box is just under "Copy if needed" and "Create group".

-
Just to add: although this is NOT THE MOST COMMON CAUSE of the error, I just your answer (didn't tick the box) happen to me now. –  Adam Jun 28 '12 at 12:06

There is usually a alias without the version identifier that is linked to the current version, in this case libz.dylib is linked to libz.1.2.5.dylib. Use the base alias instead of the versioned one.

-

Under Target -> Build Settings -> Apple LLVM compiler language: setting 'C++ Language Dialect' and 'C++ Standard Library' to Compiler default helped solve it.

-

I ran into this error when working with Google Maps framework. Under the "Build Settings" tab for the project, try changing/toggling "Build Active Architecture Only" from Yes to No after changing framework configurations. This was a small quirky trick that worked for me.

-

http://stackoverflow.com/a/10415850/1092219 Check My answer from the above link I have an similar problem that are solved with me by doing some steps that are be written in the above link try it i think you should get benefited.:)

-

if you're dealing with the iOS5 upgrade, I found that for compiling a project written to target 4.3, I could just rename libz.1.2.3.dynlib in the Project Navigator to libz.1.2.5.dynlib and it compiled.

My iPhoneOS50SDK/usr/lib folder has no libz.1.2.3.dynlib--don't know whether it's a beta thing or just natural upgrade.

-

562 0
SAP Digital Asset Management by OpenText for CRM
SAP Digital Asset Management by OpenText for CRM
50 0
ubunut 安装winehq + 官网轻聊版QQ

2185 0
sitemap & rss 切换到blog根目录下，输入： $npm install hexo-generator-feed$ npm install hexo-generator-sitemap 之后重启博客，访问/atom.xml和/sitemap.xml，会发现已经生成了。
932 0
+关注

Introduction to some Arm64 Arc