17

I've got some static libraries I've built for use on armv7 architectures. When I try to use them in a iOS project which I testrun on the iphone 5.0 simulator, I get errors telling me about undefined symbols for architecture i386 in my static libraries.

So I guess this means the iphone simulator wants libraries compiled for i386? What is the point of the simulator then - why dosn't it emulate armv7 architecture as well?

So the only way I can test my static libraries is to connect a physical iOS device and run it?

Or did I get it wrong?

KaiserJohaan
  • 9,028
  • 20
  • 112
  • 199

4 Answers4

29

So I guess this means the iphone simulator wants libraries compiled for i386? What is the point of the simulator then - why dosn't it emulate armv7 architecture as well?

You've answered your own question. It's a simulator, not an emulator. Therefore it is a Mac OSX program, running on i386 architecture. If you compile your static libraries for i386 as well you will be able to use them on the simulator.

jrturton
  • 118,105
  • 32
  • 252
  • 268
9

I am not very sure but i386 is for Simulator and armv7 is for Devices that you have connected to your Machine.

Rui Peres
  • 25,741
  • 9
  • 87
  • 137
mAc
  • 2,434
  • 2
  • 22
  • 39
4

You can actually compile the app through Xcode command line tool using i386 architecture (there is also a way to run it in Xcode UI by modifying the build settings).

xcodebuild -sdk iphonesimulator6.1 -arch i386 VALID_ARCHS="i386 armv7 armv7s" clean install

Run this command in the directory that you have the projectName.xcodeproj file.

Here's a break down of the script:

-sdk iphonesimulator6.1 // Build the app on iPhone simulator 6.1
-arch i386 // Build your app using i386 architecture
VALID_ARCHS="i386 armv7 armv7s" // Specify these architectures are valid
clean install // Clean all the builds then re-build and install
Jingjie Zhan
  • 985
  • 8
  • 12
  • Thanks, this worked for me for the new requirements on Facebook's Open Graph when submitting objects for review – estemendoza Apr 30 '14 at 20:58
0

If you want to try simulators with i386 just go for =< iPhone 5.

Bruno Muniz
  • 316
  • 3
  • 17