We've launched our new site at www.openlighting.org. This wiki will remain and be updated with more technical information.
Difference between revisions of "OLA on Android"
From wiki.openlighting.org
m |
|||
Line 9: | Line 9: | ||
<pre> | <pre> | ||
− | cd android-ndk-XXX | + | $ cd android-ndk-XXX |
− | ./build/tools/make-standalone-toolchain.sh --system=darwin-x86_64 --platform=android-9 --install-dir=$HOME/android-toolchain/api9 | + | $ ./build/tools/make-standalone-toolchain.sh --system=darwin-x86_64 --platform=android-9 --install-dir=$HOME/android-toolchain/api9 |
</pre> | </pre> | ||
Line 18: | Line 18: | ||
<pre> | <pre> | ||
− | mkdir $HOME/android | + | $ mkdir $HOME/android |
# where we install libs to | # where we install libs to | ||
− | mkdir $HOME/android/root | + | $ mkdir $HOME/android/root |
</pre> | </pre> | ||
Line 26: | Line 26: | ||
<pre> | <pre> | ||
− | export ANDROID_NDK_PATH=$HOME/android-ndk-XXX | + | $ export ANDROID_NDK_PATH=$HOME/android-ndk-XXX |
− | export ANDROID_PLATFORM=9 | + | $ export ANDROID_PLATFORM=9 |
− | export ANDROID_NDK_STANDALONE_TOOLCHAIN=~/android-toolchain/api$ANDROID_PLATFORM | + | $ export ANDROID_NDK_STANDALONE_TOOLCHAIN=~/android-toolchain/api$ANDROID_PLATFORM |
− | export CPPFLAGS="" | + | $ export CPPFLAGS="" |
− | export LDFLAGS="" | + | $ export LDFLAGS="" |
− | export PATH=$ANDROID_NDK_PATH/android-sdk-linux_x86/tools:$ANDROID_NDK_PATH/android-sdk-linux_x86/platform-tools:$ANDROID_NDK_STANDALONE_TOOLCHAIN/bin:$PATH | + | $ export PATH=$ANDROID_NDK_PATH/android-sdk-linux_x86/tools:$ANDROID_NDK_PATH/android-sdk-linux_x86/platform-tools:$ANDROID_NDK_STANDALONE_TOOLCHAIN/bin:$PATH |
</pre> | </pre> | ||
Line 37: | Line 37: | ||
<pre> | <pre> | ||
− | ls $ANDROID_NDK_PATH | + | $ ls $ANDROID_NDK_PATH |
− | ls $ANDROID_NDK_STANDALONE_TOOLCHAIN | + | $ ls $ANDROID_NDK_STANDALONE_TOOLCHAIN |
</pre> | </pre> | ||
Line 46: | Line 46: | ||
<pre> | <pre> | ||
− | which protoc | + | $ which protoc |
+ | /usr/local/bin/protoc | ||
</pre> | </pre> | ||
− | Then pass this path in the --with-protoc argument below. | + | Then pass this path shown in the --with-protoc argument below. |
Note: if you get an error like <tt>Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized</tt> when running ./configure, you need to get new versions of config.sub and config.guess and replace the ones in each package. The latest can be downloaded from http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree | Note: if you get an error like <tt>Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized</tt> when running ./configure, you need to get new versions of config.sub and config.guess and replace the ones in each package. The latest can be downloaded from http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree | ||
Line 55: | Line 56: | ||
<pre> | <pre> | ||
− | cd $HOME/android | + | $ cd $HOME/android |
− | wget <protobuf> | + | $ wget <protobuf> |
− | tar -zxf <protobuf> | + | $ tar -zxf <protobuf> |
− | cd protobuf-X.Y.Z | + | $ cd protobuf-X.Y.Z |
# fetch config.sub and config.guess if needed | # fetch config.sub and config.guess if needed | ||
− | ./configure --target=arm-linux-androideabi-gcc --with-protoc=/opt/local/bin/protoc | + | $ ./configure --target=arm-linux-androideabi-gcc --with-protoc=/opt/local/bin/protoc |
− | make | + | $ make |
− | DESTDIR="$HOME/android/root" make install | + | $ DESTDIR="$HOME/android/root" make install |
</pre> | </pre> | ||
Line 75: | Line 76: | ||
<pre> | <pre> | ||
− | cd $HOME/android | + | $ cd $HOME/android |
− | wget <e2fsprogs-url> | + | $ wget <e2fsprogs-url> |
− | tar -zxf <e2fsprogs> | + | $ tar -zxf <e2fsprogs> |
− | cd e2fsprogs-X.Y.Z | + | $ cd e2fsprogs-X.Y.Z |
− | ./configure --target=arm-linux-androideabi | + | $ ./configure --target=arm-linux-androideabi |
# we only want the libuuid bit | # we only want the libuuid bit | ||
− | cd lib/uuid | + | $ cd lib/uuid |
− | make | + | $ make |
− | DESTDIR="$HOME/android make install | + | $ DESTDIR="$HOME/android make install |
</pre> | </pre> | ||
Revision as of 09:03, 20 May 2013
These are my notes from trying to get OLA working on Android. This work was done on a Mac, but it should be the same on Linux with a few minor tweaks.
Toolchain
Download the Android NDK. Extract, this assumes you extracted to $HOME/android-ndk-XXX.
The NDK comes with a script to build a stand alone toolchain. We need to run it.
$ cd android-ndk-XXX $ ./build/tools/make-standalone-toolchain.sh --system=darwin-x86_64 --platform=android-9 --install-dir=$HOME/android-toolchain/api9
Setup
We'll do all the work in $HOME/android
$ mkdir $HOME/android # where we install libs to $ mkdir $HOME/android/root
Setup env variables. Make sure you adjust the first line to use the version you downloaded.
$ export ANDROID_NDK_PATH=$HOME/android-ndk-XXX $ export ANDROID_PLATFORM=9 $ export ANDROID_NDK_STANDALONE_TOOLCHAIN=~/android-toolchain/api$ANDROID_PLATFORM $ export CPPFLAGS="" $ export LDFLAGS="" $ export PATH=$ANDROID_NDK_PATH/android-sdk-linux_x86/tools:$ANDROID_NDK_PATH/android-sdk-linux_x86/platform-tools:$ANDROID_NDK_STANDALONE_TOOLCHAIN/bin:$PATH
Test it out:
$ ls $ANDROID_NDK_PATH $ ls $ANDROID_NDK_STANDALONE_TOOLCHAIN
Protobuf
You need to have protoc installed on your system first. To find out the correct path, run:
$ which protoc /usr/local/bin/protoc
Then pass this path shown in the --with-protoc argument below.
Note: if you get an error like Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized when running ./configure, you need to get new versions of config.sub and config.guess and replace the ones in each package. The latest can be downloaded from http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree
$ cd $HOME/android $ wget <protobuf> $ tar -zxf <protobuf> $ cd protobuf-X.Y.Z # fetch config.sub and config.guess if needed $ ./configure --target=arm-linux-androideabi-gcc --with-protoc=/opt/local/bin/protoc $ make $ DESTDIR="$HOME/android/root" make install
TODO: Figure out how to package (or should we statically link to ola?)
UUID
OSSP UUID is quite old (2008) now so it doesn't cross compile well. Instead we'll use the libuuid from e2fsprogs.
Download from http://e2fsprogs.sourceforge.net/
$ cd $HOME/android $ wget <e2fsprogs-url> $ tar -zxf <e2fsprogs> $ cd e2fsprogs-X.Y.Z $ ./configure --target=arm-linux-androideabi # we only want the libuuid bit $ cd lib/uuid $ make $ DESTDIR="$HOME/android make install
Dependency Check
By this point you should have protobuf and uuid installed into ~/android/root. Check this is so:
$ ls ~/android/root/usr/local/include/ google uuid ls ~/android/root/usr/local/lib/pkgconfig/ protobuf-lite.pc protobuf.pc uuid.pc $ export PKG_CONFIG_PATH="$HOME/android/root/usr/local/lib/pkgconfig" $ pkg-config --list-all | grep uuid uuid uuid - Universally unique id library
OLA
export ac_cv_func_malloc_0_nonnull=yes export PKG_CONFIG_PATH="$HOME/android/root/usr/local/lib/pkgconfig" ./configure --target=arm-linux-androideabi --disable-http --disable-unittests make