Until xcode 4 final (I was using 3.latest and 4 GM for the time it was available) this didn't happen. When I upgraded to xcode 4 final version, I started getting a linking error while trying to link the armv7 version with my non armv7 library (my project is set with the default Standard armv6 armv7 valid architectures):
ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --
The armv6 version compiles just fine, but the overall compilation process fails with 77 link errors.
I understand this is the expected behavior, it wont link towards armv7 with an armv6 lib. The fix is setting my project to armv6 only. My question here is: why was this working in the previous versions of xcode?
If I set to armv6 only, I start to get this warning:
Check dependencies
[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
I don't like seeing warnings :-) Anybody having similar issues?
Thanks,
Fernando
I just turned the Build active architecture only to Yes in the Project -> Build Setting -> Architectures tab.
In iOS SDK 4.3, it looks like the linker will simply refuse to use a armv6 library in an armv7 binary - this wasn't the case before.
That's why I had to update the http://code.google.com/p/ios-static-libraries/ project to generate both armv6 and armv7 versions of the libraries.
I have added 3rd Party framework with some demo classes into project but once implemented it successfully I removed those demo classes and since then the error started coming up
Error
"ld: ........., file is universal but does not contain a(n) armv6 slice for architecture armv6"
After scratching my head for a whole day I found this solution next morning maybe helpful for fellow iphone buddies coz I know the pain
Targets->"Your Project Target"-> Get Info ->Build Active Architecture only set to YES
Thats it..
Had the same problem.
But the reason was different I suppose.
I was using the library.a file built for simulator and trying to run it on device.. came to know that i need different .a files for simulator and device. I hope this helps someone ;)
Although I still don't know why this started happening only in the xcode 4 final version, I found that my external libs (ssl and crypto) were compiled against both armv6 and armv7 in the google code project very few days ago:
http://code.google.com/p/ios-static-libraries/
This will fix the issue if you define two different library search path: one for armv6, one for armv7.
Thanks,
Related
While facing no issue with actual iPhone device, my project does not build for simulators. I get this error (which occurres for many fies):
ld: warning: ignoring file /Users/stephanedeluca/Library/Developer/Xcode/DerivedData/AladdinWorkspace-afneoinpxpyfmofvnattjgylgxgo/Build/Products/Debug-iphonesimulator/GoogleDataTransport.o, building for iOS Simulator-arm64 but attempting to link with file built for unknown-x86_64
Which sounds like mixing ARM and 86 architectures.
My VALID_ARCHS is set to arm64 arm64e armv7 armv7s i386
I tried to remove VALID_ARCHS value as stated in the following answer without success:
Xcode 13 failing building with "entry point (_main) undefined. for architecture arm64"
I also tried to delete the DerivedData folder without success either.
[UPDATE] I forgot to mention that there is no more PODs in my workspace as I replaced them by the corresponding g Swift packages.
Any idea?
I found the solution: for some reasons, the architecture for macOS being ˋi386ˋ was not longer right, as I had to change it for x86_64.
Finally, my valid architectures are now:
arm64 arm64e armv7 armv7s x86_64
I recently migrated to XCode 4.5 with iOS SDK 6.0. Now when i try to archive my app, i get a long list of compiler warnings all reading the same.
warning: no rule to process file '$(PROJECT_DIR)/Classes/Utils.m' of type sourcecode.c.objc for architecture armv6
warning: architecture armv6 is not supported (current ARCHS = "armv7 armv6").
I cannot understand the last line, it says armv6 is not not supported,but armv6 is present as you can see.
1) How do i fix this?
2) What could be the implication of this? as this is just a warning? Will my app update not run of iphone 3gs?
Thanks
Xcode 4.5 has dropped support for armv6 as the warning says. The setting is showing because you had it in a previous version of your project. Just change your setting to compile for armv7 and armv7s (iPhone5).
Apple has decided to drop support for old devices and thus armv6 is deprecated. I decided to drop support for armv6 devices due to this. All armv7 devices can be upgraded to iOS 5, so I also set that as the minimum version supported.
Hi I get around 7000 such warnings in the link stage of building my app for distribution
ld: warning: unexpected srelocation type 9
Any idea what this is and how I can fix it?
EDIT:
These warnings come during the link stage of 'armv7' only when building for distribution, and I also get the following warning
warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
I have checked that armv7 is included in valid architectures" for both debug and distribution configuration.
Please check the following settings in your apps :
In the Info.plist. Check for "Required device capabilities" info, and look the data inside. You should have 2 items (NSArray) : armv6 and armv7
Try setting "Enable Linking With Shared Libraries" under Build Settings to NO
The only workaround for me was to build in XCode 4.2. It appears something in the .a file is not compatible. I was using LLVM-GCC which I thought would fix it, but it didn't.
Just remove it from "Link Binary With Libraries" is OK
Until xcode 4 final (I was using 3.latest and 4 GM for the time it was available) this didn't happen. When I upgraded to xcode 4 final version, I started getting a linking error while trying to link the armv7 version with my non armv7 library (my project is set with the default Standard armv6 armv7 valid architectures):
ld: warning: ignoring file ../bin/iOS static/arm/libssl.a, file was built for archive which is not the architecture being linked (armv7)
ld: warning: ignoring file ../bin/iOS static/arm/libcrypto.a, file was built for archive which is not the architecture being linked (armv7)
Undefined symbols for architecture armv7: -- list of symbols --
The armv6 version compiles just fine, but the overall compilation process fails with 77 link errors.
I understand this is the expected behavior, it wont link towards armv7 with an armv6 lib. The fix is setting my project to armv6 only. My question here is: why was this working in the previous versions of xcode?
If I set to armv6 only, I start to get this warning:
Check dependencies
[BWARN]warning: all apps should include an armv7 architecture (current ARCHS = "armv6").
I don't like seeing warnings :-) Anybody having similar issues?
Thanks,
Fernando
I just turned the Build active architecture only to Yes in the Project -> Build Setting -> Architectures tab.
In iOS SDK 4.3, it looks like the linker will simply refuse to use a armv6 library in an armv7 binary - this wasn't the case before.
That's why I had to update the http://code.google.com/p/ios-static-libraries/ project to generate both armv6 and armv7 versions of the libraries.
I have added 3rd Party framework with some demo classes into project but once implemented it successfully I removed those demo classes and since then the error started coming up
Error
"ld: ........., file is universal but does not contain a(n) armv6 slice for architecture armv6"
After scratching my head for a whole day I found this solution next morning maybe helpful for fellow iphone buddies coz I know the pain
Targets->"Your Project Target"-> Get Info ->Build Active Architecture only set to YES
Thats it..
Had the same problem.
But the reason was different I suppose.
I was using the library.a file built for simulator and trying to run it on device.. came to know that i need different .a files for simulator and device. I hope this helps someone ;)
Although I still don't know why this started happening only in the xcode 4 final version, I found that my external libs (ssl and crypto) were compiled against both armv6 and armv7 in the google code project very few days ago:
http://code.google.com/p/ios-static-libraries/
This will fix the issue if you define two different library search path: one for armv6, one for armv7.
Thanks,
I'm trying out a core plot iphone example and I get:
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=i386, VALID_ARCHS=armv6 armv7).
Under project settings -> architecture, the only options are standard, optimized, and native arch.
Any ideas?
Thank you.
Add i386 to Valid Architectures
I was getting the same error while trying to run some older sample code... It turns out that the project build settings get changed (by the iOS 4.1 SDK?). Anyway, changing these settings back worked for me:
ORIG PROJECT "BUILD" SETTINGS:
Architecture: $(NATIVE_ARCH)
and
Valid Architectures: i386
NEW SETTINGS:
Architectures: armv6 armv7
and
Valid Architectures: armv6 armv7 i386
Just like magic...
~Paul