LTP(Linux Test Project) for Android的编译
2017-06-13 00:15
387 查看
Linux Test Project (GitHub首页在此)(以下简称LTP) 包含了Linux内核和内核相关特性的工具集合。该工具的目的是通过把测试自动化引入到Linux内核测试,提高Linux的内核质量。众所周知Android也是Linux Kernel,如果有需要针对Android进行kernel测试,可以考虑使用LTP来进行。这里做一点编译方面的记录。
下载NDK后,解压到任意位置(我解压到了/home/xuyu/android-ndk-r10e)
cd 到 android-ndk-r10e/build/tools
执行以下命令,制作独立的交叉编译包:
注意–platform和–ndk-dir需要根据实际情况替换一下。
以下是命令执行的输出,成功后,你会看到已经打包好了交叉编译工具包了。当然,也可以在执行make-standalone-toolchain.sh时,使用–install-path=来指定输出的路径。
将arm-linux-androideabi-4.9.tar.bz2解压(依次使用bzip2 -d 和 tar -xf)得到文件夹arm-linux-androideabi-4.9。将文件夹放到任意路径下,例如我放到了/home/xuyu/,并将文件夹名字改为了 ndk-toolchains。工具链目录大概长得像这样:
![](https://img-blog.csdn.net/20170612231549378?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXB1YmNu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
解释一下其中的ANDROID=1:在LTP的INSTALL文档中有一段针对Android用户的说明,摘抄如下:
Specify ANDROID=1 when calling make. Many tests which would otherwise work are currently not built because they share a directory with an incompatible test.
The shell scripts expect /bin/sh to exist, so create a symlink.
意思是有一些测试是不适用于Android的,添加这个选项,会过滤掉这些测试(事实上我发现似乎仍然还有一些测试没有被屏蔽)
源码目录下的INSTALL文件有详细的编译依赖工具清单说明,逐一安装即可。编译步骤很简单,INSTALL中描述的很细致,我就大概列一下:
cd到ltp源码目录下,先执行
第二步,进行configure。这一步是关键,我只设定了简单的几个编译参数,如下:
第三步,执行:
注意:make过程中很可能会出错,因为作者似乎在编写时没有考虑到Android的编译兼容问题,例如我在写此文时,在编译 /testcases/kernel/syscalls/fanotify/fanotify07.c 就发生了错误:
![](https://img-blog.csdn.net/20170612235444836?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXB1YmNu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我没有研究解决如何让这个文件编译通过,而是选择直接删除了它……
![](https://img-blog.csdn.net/20170612235748916?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXB1YmNu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
说句题外话,在翻看LTP的Pull Request时,偶然发现了153这次的Pull Request,一位该项目的Contributor:Steven Jackson也是将某些无法编译、不适用的文件、选项去掉了。
第四步,执行:
耐心等待我们期待已久的LTP输出到指定的路径($HOME/ltp_output)下。
命令执行完成:
![](https://img-blog.csdn.net/20170613000759212?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXB1YmNu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们要的结果:
![](https://img-blog.csdn.net/20170613000828682?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXB1YmNu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
OK,至此,LTP for Android编译完成。至于LTP本身的使用,不是本文所述内容。
准备Android NDK交叉编译包
因为我们需要使用NDK在Linux上进行交叉编译,所以必须先配置好NDK才能继续后续编译工作。我使用的NDK版本是r10e(参考下载地址)。注意在Linux上进行交叉编译的方法是通用的,很多其他编译场景也是类似方法(例如在Linux上编译支持Android版本的ffmpeg和x264)下载NDK后,解压到任意位置(我解压到了/home/xuyu/android-ndk-r10e)
cd 到 android-ndk-r10e/build/tools
执行以下命令,制作独立的交叉编译包:
./make-standalone-toolchain.sh --platform=android-19 --ndk-dir=/home/xuyu/android-ndk-r10e
注意–platform和–ndk-dir需要根据实际情况替换一下。
以下是命令执行的输出,成功后,你会看到已经打包好了交叉编译工具包了。当然,也可以在执行make-standalone-toolchain.sh时,使用–install-path=来指定输出的路径。
Copying prebuilt binaries... Copying sysroot headers and libraries... Copying c++ runtime headers and libraries... Creating package file: /tmp/ndk-xuyu/arm-linux-androideabi-4.9.tar.bz2 Cleaning up... Done.
将arm-linux-androideabi-4.9.tar.bz2解压(依次使用bzip2 -d 和 tar -xf)得到文件夹arm-linux-androideabi-4.9。将文件夹放到任意路径下,例如我放到了/home/xuyu/,并将文件夹名字改为了 ndk-toolchains。工具链目录大概长得像这样:
环境变量
为了方便编译,我们先将NDK添加到环境变量中,方法有很多种,诸如可以vim ~/.bashrc,在最后面添加如下几个环境变量:export PATH=/home/xuyu/ndk-toolchains/bin:$PATH export SYSROOT=/home/xuyu/ndk-toolchains/sysroot export CC="/home/xuyu/ndk-toolchains/bin/arm-linux-androideabi-gcc --sysroot=$SYSROOT" export ANDROID=1
解释一下其中的ANDROID=1:在LTP的INSTALL文档中有一段针对Android用户的说明,摘抄如下:
Specify ANDROID=1 when calling make. Many tests which would otherwise work are currently not built because they share a directory with an incompatible test.
The shell scripts expect /bin/sh to exist, so create a symlink.
意思是有一些测试是不适用于Android的,添加这个选项,会过滤掉这些测试(事实上我发现似乎仍然还有一些测试没有被屏蔽)
准备源码
git clone https://github.com/linux-test-project/ltp.git源码目录下的INSTALL文件有详细的编译依赖工具清单说明,逐一安装即可。编译步骤很简单,INSTALL中描述的很细致,我就大概列一下:
cd到ltp源码目录下,先执行
make autotools
第二步,进行configure。这一步是关键,我只设定了简单的几个编译参数,如下:
./configure AR=arm-linux-androideabi-ar RANLIB=arm-linux-androideabi-ranlib --host=arm-linux-androideabi --target=arm-linux-androideabi CFLAGS="-static" LDFLAGS="-static"
第三步,执行:
make all
注意:make过程中很可能会出错,因为作者似乎在编写时没有考虑到Android的编译兼容问题,例如我在写此文时,在编译 /testcases/kernel/syscalls/fanotify/fanotify07.c 就发生了错误:
我没有研究解决如何让这个文件编译通过,而是选择直接删除了它……
说句题外话,在翻看LTP的Pull Request时,偶然发现了153这次的Pull Request,一位该项目的Contributor:Steven Jackson也是将某些无法编译、不适用的文件、选项去掉了。
第四步,执行:
make "DESTDIR=$HOME/ltp_output" SKIP_IDCHECK=1 install
耐心等待我们期待已久的LTP输出到指定的路径($HOME/ltp_output)下。
命令执行完成:
我们要的结果:
OK,至此,LTP for Android编译完成。至于LTP本身的使用,不是本文所述内容。
相关文章推荐
- 在Eclipse中创建Android Test Project,编译能通过,运行的时候报错如下:03-13 15:47:28.808: E/Trace(3280): error opening tra
- Linux基础备忘_08: LTP(Linux test project)
- GDAL for Android在linux下交叉编译的问题
- linux64位编译php遇到configure: error: GD build test failed. Please check the config.log for details
- FFmpeg for Android 编译方法 (Linux环境)
- linux下编译opencv3.3.0 for android
- Robotium ant 报错Unable to find instrumentation info for: ComponentInfo{project/android.test.InstrumentationTestRunner}
- Linux 下编译 FFmpeg for Android
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
- LTP(Linux Test Project)介绍
- LTP(Linux Test Project)介绍
- linux64位编译php遇到configure: error: GD build test failed. Please check the config.log for details
- Chromium for linux, windows, android编译
- [android]编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz错误信息
- VLC学习(1) Linux 下编译 VLC for Android
- LTP--linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
- VLC 编译安装 [for android, linux, windows]
- linux下编译vlc for android 添加 截图(去掉了画中画和路径提示)及录像功能
- linux稳定性测试 linux性能测试 ltp压力测试 ---IBM 的 linux test project
- 〖Linux〗Clang/Clang++ for Android Binary/NDK build(二进制可执行文件/NDK编译)