I have an iPhone app that I am trying to port to MacOS. To get things started, I added a MacOS target to my existing Xcode project.
The problem I am having is that when I switch from the MacOS target to the iOS target, it tries to build it with architecture i386, which leads to like a zillion compiler errors.
In my target settings for the iOS target, it shows valid architectures as armv6 and armv7.
Here is the first error:
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/machine/types.h:37:0 /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.2.sdk/usr/include/machine/types.h:37:24: error: i386/types.h: No such file or directory
This appears to be a bug in XCode, which is circumvented by option-clicking (i.e. alt-clicking) on the overview, usually top-left in the xcode window, and then selecting the right SDK. The architecture then changes to the right one (hopefully).
Related
When I build my iphone app and my ipad app for archiving, I get this message: (But with iPhone instead of iPad in the iPhone app ofc)
(null): iPad: application executable contains unsupported architecture(s): armv7s (-19031)
I didn't get this error before! I didn't get it for my free versions of my app (which is almost the same code) I think it has something to do with iPhone 5? I want it to work with iPhone 5 so I don't want to remove it armv7s
/A noob
This warning is perfectly normal when you use an armv7 device to archive your application.
Think about it, you make an archive that includes the armv7s architecture (which is what we want) and the warning tells you that your armv7 device does not support that architecture (which totally makes sense).
To prove that even further, just hook up an iPhone 5 and try archiving and you will see that the warning will go away.
You have to wait until all custom libs in your project will update. Check it, some of popular libs have updated yet.
Until that remove armv7s:
Project -> Build Settings -> Archetecures
I had a similar problem on the XCode 4.6.3.
I get message:
iPhone/iPod: application executable contains unsupported architecture(s): i386
it turned out that if before the Build, run an application on the simulator, the application is going to the architecture i386 (for Mac), ignoring the Project Settings. Before Build need choose iOS Device as target.
I am using Xcode 4 version, and I have deployed SUP sample project developed for iOS platform in Xcode.
All the configurations I had done for running the application. The project was successfully built and run in iPhone & iPad simulators.
When I am trying to build the same with physical iPad registered, I am getting the following error.
[BEROR]No architectures to compile for
(ONLY_ACTIVE_ARCH=YES, active arch=armv7, VALID_ARCHS=armv6).
In the valid architecures menu i had added armv6 and armv7 also.
And at that time also am getting a number of errors saying
Apple Mach-O Linker Error
Select your project icon, go to build settings, in the architecture option, for you valid configuration (debug/release), click the '+' button, and add "armv6". Initially it has only armv7. Refer screen shot:
it's me again with my iOS trouble. I've finally managed to build the master branch of this XML-RPC framework https://github.com/eczarny/xmlrpc which produced an XMLRPC.framework for me. I managed to include that framework in my iOS project, all good, but when I build it...
ld: warning: ignoring file /Users/kovshenin/Library/Developer/Xcode/DerivedData/XMLRPC-emidbddzjlofthfgowywcfscewgd/Build/Products/Development/XMLRPC.framework/XMLRPC,
file was built for unsupported file format which is not the architecture being linked (i386)
So I went back to the XMLRPC project and tried to select different Base SDKs and Architectures for the target, but with no luck, seems like it's only building it for 64-bit Intel. Even tried the iOS SDK which gives me a "The selected run destination is not valid for this action." error.
Sorry again for my "newbish" talk, but the official dev forums can't seem to help me out. Thanks!
P.S. I'm using Xcode 4.
Architecture is related to the processor on which you are running your code. If you are building for the simulator, then you are building for your Mac, which is Intel, i386. If you are building for a physical iOS device, then you are building for arm6 or arm7, depending on how new the devices are. Fourth generation iPhone 4 and iPad were the first arm7 devices.
As far as setting the build settings, I'd recommend taking a look at the build settings. In Xcode. Here's a screenshot:
Click on your project, then on your build. Under the architectures section, you can configure your architectures as necessary. You should note though, that the original developer would have to have built it for the simulator as well as the device, or you won't be able to run it on the simulator.
It looks as though the library may not fat meaning it'll only build for the device, and not for the simulator. Connect your device and select it in the drop down, then build again and see if the error disappears.
I'm trying to implement the Cocoa plotting framework (Alpha Release 0.1) in my iPhone app.
I figured I'd first try to run the sample they provide. I attempted to open and compile the project located in /Source/examples/CPTestApp-iPhone/.
It says my base SDK was missing right off of the bat, so I edited the Project settings and the Active Target to use the iOS4 SDK, which I've done before for samples and had work. I'm not sure what to do. I'm running one of the newest Unibody Macbooks, with 10.6.4.
Here is the full error:
// - start - //
Check dependencies
[BEROR]No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=i386, VALID_ARCHS=armv6 armv7).
// - end - //
Thoughts?
I also went to the Build settings for the target(s) that failed and added "i386" to the valid architectures
Try this:
Project Build Settings:
Architectures: Standard (armv6 armv7)
Base SDK: Latest iOS Build Active
Architectures Only: Checked Valid
Architectures: armv6 armv7
Delete any sub settings in the Architecture build setting.
Target Build Settings:
Same at project settings.
Frameworks
Add the SystemConfiguration.framework to your project. - Not sure why this had any impact.
Clean all targets.
Build for the simulator.
The long explanation for this can be found on our blog: http://longweekendmobile.com/2010/06/15/fixing-the-missing-required-architecture-arm-in-file-when-developing-for-ipad/
Adding i386 to the Valid Architectures list worked for me!
For me it was that I had to add i386 to the VALID_ARCHS list. Odd, but it fixed my problem for simulator builds.
See this post.
You have selected as active architecture "active arch=i386 (your Mac)" but the project compiles for " VALID_ARCHS=armv6 armv7 (iPhone Device)", try setting the right arch in the project settings, so it is built for iPhone as it should be.
This project appears to pre-date iOS 4, so you need to open up the .xcodeproj file for the Core Plot library itself, too. It probably also has a broken reference to an old iOS Base SDK and may need the architectures updated.
This happens all the time with old projects migrated to SDK 3.2/4.0. You have to open the target settings and change everything to SDK 4.0 or 3.2. You can still have the target OS be 3.0 if you want that. If it still says "missing SDK" you neglected to change one of those settings to 4.0 or 3.2.
armv6 armv7 , Works for me in valid Architecture .
If you tried all method with "NO SUCCESS"
Try to run project on you device, if it works on device then it will works fine on simulator too.
I'm getting the following error when including static libraries:
missing required architecture i386 in
file
This worked 30 seconds previously, and only failed when I upgraded to Xcode 3.2.3. I've used "file" command to check - and, yes, XCode is building completely the wrong architecture (armv6 + armv7 instead of i386).
This seems to be a major bug in latest Xcode, where Apple has re-written the build / compile / link settings. There's a note in the release notes saying very vaguely that they've "Changed it" because it used to be "confusing". This is not helpful.
The build settings for the library VERY clearly say:
"Valid architectures: i386"
There's no confusion here - Xcode is building something other than what the target says it should.
The question is: how do you un-break this? How do you force Xcode to do what it's supposed to? I've re-installed Xcode from scratch, cleaned everything, and manually inspected the build files. There's nothing wrong (and, of course, it worked perfectly in xcode 3.2.2)
After considerable research, I believe the answer is:
"this is now impossible - Apple has deliberately hard-coded XCode to ignore build settings"
However, I've come up with a script that automatically builds ALL platforms of a project (which you HAVE to do with static libraries - you don't have much choice now, because Apple has disabled Targets), and the script could easily be modified to do all targets, instead of all platforms:
Build fat static library (device + simulator) using Xcode and SDK 4+
Right click on your Target app under Targets and make sure that the Base SDK is set to iOS.