如何交叉编译LTP for android

时间:2012-08-30 23:44:38

标签: android linux testing cross-compiling

有人交叉编译并使用LTP for android,我尝试使用arm-eabi工具链交叉编译LTP,arm-linux-none-gnueabi工具链,但我无法在android设备中执行测试用例。

1 个答案:

答案 0 :(得分:1)

首先创建独立工具链(使用make-standalone-toolchain.sh脚本)并将其安装到/opt/android-standalone-toolchain.api-${API}

构建本身:

API=24
export TOOLCHAIN_ROOT=/opt/android-standalone-toolchain.api-${API}
export SYSROOT=$TOOLCHAIN_ROOT/sysroot
export CROSS_COMPILE=$TOOLCHAIN_ROOT/bin/arm-linux-androideabi-
export HOST=arm-linux-androideabi

# Non-exhaustive lists of compiler + binutils
# Depending on what you compile, you might need more binutils than that
export CPP=${CROSS_COMPILE}cpp
export AR=${CROSS_COMPILE}ar
export AS=${CROSS_COMPILE}as
export NM=${CROSS_COMPILE}nm
export CC=${CROSS_COMPILE}gcc
export CXX=${CROSS_COMPILE}g++
export LD=${CROSS_COMPILE}ld
export RANLIB=${CROSS_COMPILE}ranlib

export CFLAGS="${CFLAGS} --sysroot=${SYSROOT} -I${SYSROOT}/usr/include \
    -I${ANDROID_PREFIX}/include"
export CPPFLAGS="${CFLAGS}"
export LDFLAGS="${LDFLAGS} -L${SYSROOT}/usr/lib -L${ANDROID_PREFIX}/lib"

make autotools
./configure --host=${HOST} --with-sysroot=${SYSROOT}
make -j$(getconf _NPROCESSORS_ONLN) ANDROID=1
make install
adb push /opt/ltp /data/local/tmp

CREDITS:在LTP源代码的INSTALL文件中记录了使用变量ANDROID=1,设置其他变量的灵感来自android_configure.sh

但是目前构建失败,因为需要禁用许多测试(仿生不支持许多必需的功能,请参阅谷歌的人发表的list of tests needed to be disabled)。

目前,上游正在努力修复Android的LTP构建。来自谷歌 added LTP into AOSP 的人,但他们将代码贡献回LTP上游(请参阅LTP邮件列表people from google planning to contribute中的信息,their instructions about building)。

一些与Android相关的修补程序(来自Google和其他人):fix the executable shell pathfix temp dirfix stack_clash test

目前在AOSP中使用google的存储库可能更容易(在AOSP树中使用树内构建或使用独立工具链在树外构建),但LTP上游迟早要从google的存储库获取android的所有修复程序。