views:

71

answers:

2
+1  Q: 

Using libraraies

Hi ,

I have a Library built in Macosx ibopencore-amrnb.a. Can I use it with my Iphone app as library? If yes How ? If not How Do i get the library working with Iphone app?

Thanks, Sowri

+1  A: 

Mac osX is an X86 platform the iphone uses an ARM processor so at the very least it needs to be recompiled.The architectures are very different ,though, so things like endeaness(?) and word size must be taken into consideration.

hacim
A: 

Step 1) Build the static libraries.

I've built third-party libraries, statically, for the iPhone. After a bit of trial-and-error, here's what I found to be a good starting point:

Cross-Compile for iPhoneOS:

./configure --prefix=/path/to/project/external/iphoneos/ --host="arm-apple-darwin9" --target=arm-apple-darwin9 --enable-static --disable-shared CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1 CFLAGS="-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk" CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp make make install

Cross-Compile for iPhoneSimulator:

./configure --prefix=/path/to/project/external/iphonesimulator --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.0 CFLAGS="-arch i686 -pipe -mdynamic-no-pic -std=c99 -Wno-trigraphs -fpascal-strings -fasm-blocks -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -mmacosx-version-min=10.5 -I/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/usr/include/ -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk" CPP=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ar LDFLAGS="-arch i686 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk -Wl,-dead_strip -mmacosx-version-min=10.5" make make install

However, it's really just a starting point. It'll probably only work for projects with flexible Makefiles. If the above doesn't work, I've had to:

  • turn on project-specific ./configure flags
  • modify the configure script
  • modify the generated Makefile
  • modify autoconfigure scripts

You can also turn on optimization flags for the iPhoneOS version (after you've got it working first).

Step 2) Add the libraries to your project's search path.

In your projects Info settings, set these Build options:

Header Search Paths: "$(SRCROOT)/external/$(PLATFORM_NAME)/include"

Library Search Paths: "$(SRCROOT)/external/$(PLATFORM_NAME)/lib"

Other Linker Flags: [Add the flags for your static libs]

Afterwards, you should be able to include the third-party libraries in your project.

Kelvin
Hey Thanks GuysI did exactly as you said and it seemed very easy.Thanks
Sowri
Hey, could you up-vote this and mark it as the answer? Thanks.
Kelvin
It says I need 15 reputations to vote this up.
Sowri
Ah, got you. :-(
Kelvin