Build TensorFlow Lite for iOS

This document describes how to build TensorFlow Lite iOS library. If you just want to use it, the easiest way is using the TensorFlow Lite CocoaPod releases. See TensorFlow Lite iOS Demo for examples.

Building

To create a universal iOS library for TensorFlow Lite, you need to build it using Xcode's command line tools on a MacOS machine. If you have not already, you will need to install Xcode 8 or later and the tools using xcode-select:

xcode-select --install

If this is a new install, you will need to run XCode once to agree to the license before continuing.

(You will also need to have Homebrew installed.)

Then install automake/libtool:

brew install automake
brew install libtool

If you get an error where either automake or libtool install but do not link correctly, you'll first need to:

sudo chown -R $(whoami) /usr/local/*

Then follow the instructions to perform the linking:

brew link automake
brew link libtool

Then you need to run a shell script to download the dependencies you need:

tensorflow/contrib/lite/tools/make/download_dependencies.sh

This will fetch copies of libraries and data from the web and install them in tensorflow/contrib/lite/downloads.

With all of the dependencies set up, you can now build the library for all five supported architectures on iOS:

tensorflow/contrib/lite/tools/make/build_ios_universal_lib.sh

Under the hood this uses a makefile in tensorflow/contrib/lite to build the different versions of the library, followed by a call to lipo to bundle them into a universal file containing armv7, armv7s, arm64, i386, and x86_64 architectures. The resulting library is in tensorflow/contrib/lite/tools/make/gen/lib/libtensorflow-lite.a.

If you get an error such as no such file or directory: 'x86_64' when running build_ios_universal_lib.sh: open Xcode > Preferences > Locations, and ensure a value is selected in the “Command Line Tools” dropdown.

Using in your own application

You‘ll need to update various settings in your app to link against TensorFlow Lite. You can view them in the example project at tensorflow/contrib/lite/examples/ios/simple/simple.xcodeproj but here’s a full rundown:

  • You'll need to add the library at tensorflow/contrib/lite/gen/lib/libtensorflow-lite.a to your linking build stage, and in Search Paths add tensorflow/contrib/lite/gen/lib to the Library Search Paths setting.

  • The Header Search paths needs to contain:

    • the root folder of tensorflow,
    • tensorflow/contrib/lite/downloads
    • tensorflow/contrib/lite/downloads/flatbuffers/include
  • C++11 support (or later) should be enabled by setting C++ Language Dialect to GNU++11 (or GNU++14), and C++ Standard Library to libc++.