The repository contains the lxc and related tools/packages for Android 7.1.2, build scripts are provide for compiling lxc with Android standalone NDK.
lxc requires some SELinux libs/tools and libcap which is not supported in essential Android, for easier maintenance, we collect the following required packages into this repository.
Before you can start build these packages, please following the steps below to get prepared for compiling.
you can use the following target platform dependent environment setup script to build these packages.
[envsetup_arm_64.sh]
export ANDROID_SDK_HOME=/home/sting/local/android-sdk-linux
export ANDROID_NDK_HOME=/home/sting/local/android-ndk-r15b
export ANDROID_STANDALONE_TOOLCHAIN_HOME=/opt/toolchain/android-toolchain-arm_64-4.9-android-24
export SYSROOT=$ANDROID_STANDALONE_TOOLCHAIN_HOME/sysroot
# User specific environment and startup programs
PATH=${ANDROID_NDK_HOME}
PATH=$PATH:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools
PATH=$PATH:${ANDROID_STANDALONE_TOOLCHAIN_HOME}/bin:/usr/local/sbin:/usr/local/bin
PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH
# Tell configure what tools to use.
export BUILD_TARGET_HOST=aarch64-linux-android
export AR=$BUILD_TARGET_HOST-ar
export AS=$BUILD_TARGET_HOST-clang
export CC=$BUILD_TARGET_HOST-clang
export CXX=$BUILD_TARGET_HOST-clang++
export LD=$BUILD_TARGET_HOST-ld
export STRIP=$BUILD_TARGET_HOST-strip
export RANLIB=$BUILD_TARGET_HOST-ranlib
# Tell configure what flags Android requires.
export CFLAGS="-fPIE -fPIC --sysroot=$SYSROOT"
export LDFLAGS="-pie"
# SELinux specifics
BASEDIR=$(pwd)
export ANDROID_LIBS="$BASEDIR/../android-libs/arm_64"
export CFLAGS="$CFLAGS -I$ANDROID_LIBS/include"
export LDFLAGS="$LDFLAGS -L$ANDROID_LIBS/lib"
export ODMDIR=/odm
[envsetup_x86_64.sh]
export ANDROID_SDK_HOME=/home/sting/local/android-sdk-linux
export ANDROID_NDK_HOME=/home/sting/local/android-ndk-r15b
export ANDROID_STANDALONE_TOOLCHAIN_HOME=/opt/toolchain/android-toolchain-x86_64-4.9-android-24
export SYSROOT=$ANDROID_STANDALONE_TOOLCHAIN_HOME/sysroot
# User specific environment and startup programs
PATH=${ANDROID_NDK_HOME}
PATH=$PATH:${ANDROID_SDK_HOME}/tools:${ANDROID_SDK_HOME}/platform-tools
PATH=$PATH:${ANDROID_STANDALONE_TOOLCHAIN_HOME}/bin:/usr/local/sbin:/usr/local/bin
PATH=$PATH:/usr/sbin:/usr/bin:/sbin:/bin
export PATH=$PATH
# Tell configure what tools to use.
export BUILD_TARGET_HOST=x86_64-linux-android
export AR=$BUILD_TARGET_HOST-ar
export AS=$BUILD_TARGET_HOST-clang
export CC=$BUILD_TARGET_HOST-clang
export CXX=$BUILD_TARGET_HOST-clang++
export LD=$BUILD_TARGET_HOST-ld
export STRIP=$BUILD_TARGET_HOST-strip
export RANLIB=$BUILD_TARGET_HOST-ranlib
# Tell configure what flags Android requires.
export CFLAGS="-fPIE -fPIC --sysroot=$SYSROOT"
export LDFLAGS="-pie"
# SELinux specifics
BASEDIR=$(pwd)
export ANDROID_LIBS="$BASEDIR/../android-libs/x86_64"
export CFLAGS="$CFLAGS -I$ANDROID_LIBS/include"
export LDFLAGS="$LDFLAGS -L$ANDROID_LIBS/lib"
export ODMDIR=/odm
Following the steps below to build and install libcap
$ cd $LXC_HOME
$ source ./envsetup_x86_64.sh or source ./envsetup_arm_64.sh
$ cd $LXC_HOME/lxc-android-libcap/libcap/
$ ./build.sh
Following the steps below to build and install SELinux
$ cd $LXC_HOME
$ source ./envsetup_x86_64.sh or source ./envsetup_arm_64.sh
$ cd $LXC_HOME/selinux-pixel_7.1.2_r17)
$ ./build.sh
Following the steps below to build and install lxc package
$ cd $LXC_HOME
$ source ./envsetup_x86_64.sh or source ./envsetup_arm_64.sh
$ cd $LXC_HOME/lxc)
$ ./build.sh
After successfully building lxc tools and packages, the executalbe binaries will be install onto "/odm", you can directory copy this directory onto your device if necessary.
/odm
├── bin
│ ├── avcstat
│ ├── ...
│ ├── getfilecon
│ ├── ...
│ ├── lxc-start
│ ├── lxc-stop
│ ├── ...
│ ├── setfiles
│ └── ...
├── containers
├── etc
│ ├── ...
│ └── lxc
│ └── default.conf
├── include
│ └── ...
├── lib
│ ├── ...
│ ├── liblxc.so
│ ├── lxc
│ │ └── ...
...
├── libexec
│ └── lxc
│ ├── ...
├── sbin
│ ├── ...
├── share
│ └── lxc
...