Build or Compile Linphone from Source for iPhone and iPad

By Jessica Chiang

This entry documents how to build Linphone from source for iPhone and iPad

Updated for Mac Maverick(v10.9.5 v10.9.3), Version 6.1 (6A1052d) XCode6 Beta3, iOS 8.1 7.1, and the latest Linphone source (as of 01/17/15 7/29/14 ). Tested deploying to iPhone5, iPhone5s, iPhone6, and iPhone6 Plus simulators.

To build Linphone for iPhone and iPad

Step 1: Install XCode

Install XCode

Step 2: Install MacPort

Install MacPort

Note that you may need to add the path to port to your shell’s path. MacPort’s executable, port, is installed to /opt/local/bin. See this page for more instruction.

If you’ve already have macport installed, then proceed to update and upgrade the outdated modules
To update

port selfupdate

To upgrade

port upgrade outdated

Step 3: Install or Update Git

Install git. I followed the instruction on this great github article. To update an existing git install (if you got an git version error in the later steps)

git clone git://github.com/gitster/git.git

Step 4: Obtain linphone source code

Download linphone source from this git tree page

git clone git://git.linphone.org/linphone-iphone.git --recursive

Step 5: Install JDK Some submodules require JDK. You can download JDK from Oracle site. I used JDK7 (http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html) After installation, verify JDK by opening a terminal and type

      #java -version

Step 5: Follow README.macos.md

The README.macos.md file is located in submodules/linphone/README.macos.md

Step 6: Follow instruction in README.md

he README.md is located in

Step 7: Update iOS SDK Version

 

IMPORTANT!!! Update SDK_VERSION in submodules/build/iphone-config.site if appropriate

To check for iOS SDK, at the commandline

   #ls /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

My result is:

       iPhoneOS7.0.sdk

Therefore I changed my iphone-config.site to:

   ...
   SDK_VERSION_MAJOR=7
   SDK_VERSION=7.0
   ...

Step 8: Build LinPhone SDK

Build SDK

cd submodules/build

make veryclean

make all

The build can take a long while, so grab yourself a good book or go make yourself a good cup of instant noodle.

Step 8: Build LinPhone in XCode

Since XCode 5.1, arm64 has become among the standard architectures to build for, but linphone project does not build for arm64. To force XCode later than 5.1 to skip arm64 (x86_64), so that iPhone5s and up would work,  take the following steps:

Open the linphone.xcodeproj file with XCode

Select the linphone project, then click the “Build Settings” link. The default architectures should include armv7 and arm64.

Change Architectures and Valid Architectures to remove arm64. Leave armv7 and armv7s.

After the architecture change, try compiling against iPhone5s, iPhone6, and iPhone6 Plus simulators.

For more info, please refer to

  • http://lists.nongnu.org/archive/html/linphone-developers/2014-12/msg00076.html
  • http://stackoverflow.com/questions/22323039/arm64-architecture-in-xcode-5-1

Step 9: Install LinPhone to iPhone/iPad without Apple Developer License

I was able to follow this great tutorial to get Linphone on my jailbroken phone
Using Xcode Without Provisioning Proile
Note: This tutorial only works up to iOS 6.0.

 

Troubleshooting

Error: Unable to determine simulator device to boot

Solution: You may have multiple simulators. Close all of them and try again. Also, I ran into this problem when I have both XCode5 and XCode6 Beta 3 open, including their simulators.