ltp交叉编译测试
来源:互联网 发布:科比06赛季所有数据 编辑:程序博客网 时间:2024/06/05 10:53
ltp交叉编译测试
预备工作:
为android加入busybox工具
我们可以通过两种方式进入Android的console:
1. 直接执行命令emulator -shell;
2. 在启动emulator后,通过命令adb shell进入。
之后我们就可以 使用一些linux下常用的命令了,如ls,cat等。然而Android自带的toolbox(位于/system/bin中)也太简略了点,有些命令 如find,Android并不支持或者支持得不好。下面将介绍如何为Android加入busybox工具,通过编译得到一个可以在Android里面 运行的busybox工具,我们就可以使用众多常见的linux命令了,如find,touch等。
步骤如下:
1. 首先去busybox主页 下载最新版本的busybox源代码.
2. 下载交叉编译工具: GNU Toolchain for ARM Processors
下载地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux TAR即可。
最后得到一个arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件
将压缩包解压到linux下某个目录, 并设置好环境变量, 使之能找到前缀为"arm-none-linux-gnueabi-"的交叉编译工具.
3. 进入busybox源码目录.
先执行make menuconfig命令对编译过程进行配置. 过程如下:
Busybox Settings -> Build Options->
[*] Build BusyBox as a static binary(no shared libs) 这个要选上,因上这样子编译出来的busyBox才是可以独立运行的。
(/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-)Cross Compiler prefex 这是交叉编译器的"路径+前缀",要根据具体的情况来设置。
Busybox Settings -> InstallationOptions->
[*] Don’t use /usr 这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。
4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误,可指定交叉编译器用到的头文件所在路径. 如
$make-I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/
5 编译成功后将得到一个名为busybox的可执行文件.
6 在Android的console下建立目录/data/busybox, 并使用下面的命令将文件busybox复制该目录中:
adb push busybox /data/busybox
7 从Android的console进入/data/busybox目录, 为可执行文件busybox加上可执行属性: chmod +x busybox
8 这时我们就可以使用busybox工具了, 如果希望在任何目录下都可以直接使用bosybox,则需要将路径/data/busybox export到path环境变量中:
export PATH=$PATH:/data/busybox
9 设置环境变量之后, 在命令行输入busybox, 即可看到其用法, 如:
在当前目录及其子目录中查找名为init.rc的文件可使用以下命令:
$busybox find . -name init.rc
10 安装busybox。
通过执行./busybox–install -s 我们会看到出现一些错误, 原因是因为Android系统的根目录和/sbin目录是只读的. 因此我们无法把一些常用命令安装到/bin目录下, 也不能修改/init.rc文件来设置PATH环境变量.
对于如何执行命令busybox–install -s 的默认安装路径, 这里我还不太清楚, 或许跟Makefile和编译busybox的相关设置有关.
尽管我们不可以在Android里面通过执行busybox –install -s 命令来安装常用命令, 我们却可以通过另外一个方法来把常用命令安装到Android里面.
方法很简单, 可以先在外面的linux系统中执行make install命令把相关的命令提取出来. 然后再通过命令adb push ./_install/bin /data/busybox/bin 把这些常用命令复制进Android系统中. 注意: makeinstall安装命令的所在路径可通过执行make menuconfig进行设置, 默认为./_install目录下面.
这样,我们就不用每次使用busybox提供的一个命令时, 都要在前面加上busybox了.
11 修改/init.rc文件设置环境变量.
请参考帖子: 对Android启动过程的进一步研究
要提醒的是, 修改PATH环境变量的时候, 应该把busybox常用命令的路径"/data/busybox/bin"放在Android的常用命令路径"/system/bin"的前面, 否则, 先查找得到的将不是busybox的命令, 可以这样设置:
export PATH /data/busybox/bin:/sbin:/system/sbin:/system/bin:/system/xbin
一、Porting LTP to Android
Linux Test Project (LTP)是一个测试可靠性的工具,我们可以将其 Porting 到 Android 的环境中去, 但… 要先说清楚,不保证测试后能够全部通过LTP的测试,此处所编译的版本为20120104的版本。
1. 先运行configure命令, 因为是 for Android 的, 因此要针对所建置的 ARM toolchain 做调整, 本例中是采用arm-none-linux-gnueabi的环境来设置的./configureAR=arm-none-linux-gnueabi-ar CC=arm-none-linux-gnueabi-gccRANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip--host=arm-linux --target=arm-linux CFLAGS="-static"LDFLAGS="-static -pthread”
2. 在ltp-full-20120104/testcases/kernel/controllers/libcontrollers/libcontrollers.h里增加LINE_MAX的 define, 这边时设定为255.
3. 将ltp-full-20120104/testcases/kernel/fs/fs-bench里random-access.c,random-del-create.c&random-access-del-create.c这三个档案里的openlog[]阵列名称修改成其他的名称, 避免冲突.
4. 在ltp-full-20120104/testcases/kernel/sched/sched_stress/sched_driver.c和ltp-full-20120104/testcases/kernel/fs/ftest/libftest.c这两个文档里, 增加PATH_MAX的 define值, 这里是设定成1024.
5. 在ltp-full-20120104/testcases/kernel/sched/cfs-scheduler/hackbench.c里加上PTHREAD_STACK_MIN的 define,这里设成1024.
6. 接着就是make。
7. 最后是make install, 这里会将 build 好的 LTP 安裝到所/opt/ltp。
二、 LTP 运行环境的建立
由于LTP运行脚本中,用到很多shell的命令,而android的adb shell只支持部分linux标准的bash shell中的部分命令,所以需要用busybox。
1.导入busybox
adb remount
adb push ~/busybox /data/busybox
adb shell
2.在adb shell中设置busybox的权限
chmod 777 /data/busybox
3.从busybox中导出需要支持的命令:
(1)建立shell
- mount -o remount /dev/block/mmcblk0p9 /system
- cd /system/bin;
- rm sh;
- ln -s /data/busybox sh
(2) 在/system/bin中建立如下软连接:这里的删除要放在后面执行,因为,如果先执行rm rm,结果会导致之后的rm不可用。
- mount -o remount /dev/block/mmcblk0p9 /system
- cd /system/bin
- rm dirname
- ln -s /data/busybox dirname
- rm basename
- ln -s /data/busybox basename
- rm mkdir
- ln -s /data/busybox mkdir
- rm mktemp
- ln -s /data/busybox mktemp
- rm awk
- ln -s /data/busybox awk
- rm grep
- ln -s /data/busybox grep
- rm sed
- ln -s /data/busybox sed
- rm cut
- ln -s /data/busybox cut
- rm free
- ln -s /data/busybox free
- rm head
- ln -s /data/busybox head
- rm ldd
- ln -s /data/busybox ldd
- rm fdformat
- ln -s /data/busybox fdformat
- rm touch
- ln -s /data/busybox touch
- rm tr
- ln -s /data/busybox tr
- rm rm
- ln -s /data/busybox rm
4.另开一个终端,导入编译好的binary(之前编译生成的/opt/ltp下的所有文件)
adb push /opt/ltp /data/
5.设置权限。
adb shell下,
-cd /data
-/data/busybox chmod 777 ltp -R
三、LTP测试运行:
1.在adb shell中运行如下命令:
mount -o remount rootfs /
2.运行LTP测试的命令:
cd /data/ltp
/data/busybox ./runltp -p -l /tmp/resultlog.20051221 -d /tmp -o/tmp/ltpscreen.20051221 -t 1m
./runltp -p -l /tmp/resultlog.20051221 -d /tmp -o /tmp/ltpscreen.20051221 -t1m
这里的1m代表1分钟,时间可以设定。
备注:
1.如在运行ltp测试命令后,终端显示无法创建tmp,应在终端提示无法自动建立的位置手动建立一个tmp目录。
2.如遇到终端提示,有些命令不可用或无法找到等情况,在步骤二的3(2)中将命令重新链接。
预备工作:
为android加入busybox工具
我们可以通过两种方式进入Android的console:
1. 直接执行命令emulator -shell;
2. 在启动emulator后,通过命令adb shell进入。
之后我们就可以 使用一些linux下常用的命令了,如ls,cat等。然而Android自带的toolbox(位于/system/bin中)也太简略了点,有些命令 如find,Android并不支持或者支持得不好。下面将介绍如何为Android加入busybox工具,通过编译得到一个可以在Android里面 运行的busybox工具,我们就可以使用众多常见的linux命令了,如find,touch等。
步骤如下:
1. 首先去busybox主页 下载最新版本的busybox源代码.
2. 下载交叉编译工具: GNU Toolchain for ARM Processors
下载地址:http://www.codesourcery.com/gnu_toolchains/arm/download.html
其中第一项选择ARM EABI或ARM GNU/Linux,第二项选择IA32 GNU/Linux TAR即可。
最后得到一个arm-2007q3-51-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2文件
将压缩包解压到linux下某个目录, 并设置好环境变量, 使之能找到前缀为"arm-none-linux-gnueabi-"的交叉编译工具.
3. 进入busybox源码目录.
先执行make menuconfig命令对编译过程进行配置. 过程如下:
Busybox Settings -> Build Options->
[*] Build BusyBox as a static binary(no shared libs) 这个要选上,因上这样子编译出来的busyBox才是可以独立运行的。
(/home/jo/tool/arm-2008q3/bin/arm-none-linux-gnueabi-)Cross Compiler prefex 这是交叉编译器的"路径+前缀",要根据具体的情况来设置。
Busybox Settings -> InstallationOptions->
[*] Don’t use /usr 这样子编译出来的busybox才不会安装到你主机的/usr目录下。一定要选上。
4 执行make编译源码. 如果编译过程中产生无法找到头文件的错误,可指定交叉编译器用到的头文件所在路径. 如
$make-I./home/jo/tool/arm-2008q3/arm-none-linux-gnueabi/libc/usr/include/
5 编译成功后将得到一个名为busybox的可执行文件.
6 在Android的console下建立目录/data/busybox, 并使用下面的命令将文件busybox复制该目录中:
adb push busybox /data/busybox
7 从Android的console进入/data/busybox目录, 为可执行文件busybox加上可执行属性: chmod +x busybox
8 这时我们就可以使用busybox工具了, 如果希望在任何目录下都可以直接使用bosybox,则需要将路径/data/busybox export到path环境变量中:
export PATH=$PATH:/data/busybox
9 设置环境变量之后, 在命令行输入busybox, 即可看到其用法, 如:
在当前目录及其子目录中查找名为init.rc的文件可使用以下命令:
$busybox find . -name init.rc
10 安装busybox。
通过执行./busybox–install -s 我们会看到出现一些错误, 原因是因为Android系统的根目录和/sbin目录是只读的. 因此我们无法把一些常用命令安装到/bin目录下, 也不能修改/init.rc文件来设置PATH环境变量.
对于如何执行命令busybox–install -s 的默认安装路径, 这里我还不太清楚, 或许跟Makefile和编译busybox的相关设置有关.
尽管我们不可以在Android里面通过执行busybox –install -s 命令来安装常用命令, 我们却可以通过另外一个方法来把常用命令安装到Android里面.
方法很简单, 可以先在外面的linux系统中执行make install命令把相关的命令提取出来. 然后再通过命令adb push ./_install/bin /data/busybox/bin 把这些常用命令复制进Android系统中. 注意: makeinstall安装命令的所在路径可通过执行make menuconfig进行设置, 默认为./_install目录下面.
这样,我们就不用每次使用busybox提供的一个命令时, 都要在前面加上busybox了.
11 修改/init.rc文件设置环境变量.
请参考帖子: 对Android启动过程的进一步研究
要提醒的是, 修改PATH环境变量的时候, 应该把busybox常用命令的路径"/data/busybox/bin"放在Android的常用命令路径"/system/bin"的前面, 否则, 先查找得到的将不是busybox的命令, 可以这样设置:
export PATH /data/busybox/bin:/sbin:/system/sbin:/system/bin:/system/xbin
一、Porting LTP to Android
Linux Test Project (LTP)是一个测试可靠性的工具,我们可以将其 Porting 到 Android 的环境中去, 但… 要先说清楚,不保证测试后能够全部通过LTP的测试,此处所编译的版本为20120104的版本。
1. 先运行configure命令, 因为是 for Android 的, 因此要针对所建置的 ARM toolchain 做调整, 本例中是采用arm-none-linux-gnueabi的环境来设置的./configureAR=arm-none-linux-gnueabi-ar CC=arm-none-linux-gnueabi-gccRANLIB=arm-none-linux-gnueabi-ranlib STRIP=arm-none-linux-gnueabi-strip--host=arm-linux --target=arm-linux CFLAGS="-static"LDFLAGS="-static -pthread”
2. 在ltp-full-20120104/testcases/kernel/controllers/libcontrollers/libcontrollers.h里增加LINE_MAX的 define, 这边时设定为255.
3. 将ltp-full-20120104/testcases/kernel/fs/fs-bench里random-access.c,random-del-create.c&random-access-del-create.c这三个档案里的openlog[]阵列名称修改成其他的名称, 避免冲突.
4. 在ltp-full-20120104/testcases/kernel/sched/sched_stress/sched_driver.c和ltp-full-20120104/testcases/kernel/fs/ftest/libftest.c这两个文档里, 增加PATH_MAX的 define值, 这里是设定成1024.
5. 在ltp-full-20120104/testcases/kernel/sched/cfs-scheduler/hackbench.c里加上PTHREAD_STACK_MIN的 define,这里设成1024.
6. 接着就是make。
7. 最后是make install, 这里会将 build 好的 LTP 安裝到所/opt/ltp。
二、 LTP 运行环境的建立
由于LTP运行脚本中,用到很多shell的命令,而android的adb shell只支持部分linux标准的bash shell中的部分命令,所以需要用busybox。
1.导入busybox
adb remount
adb push ~/busybox /data/busybox
adb shell
2.在adb shell中设置busybox的权限
chmod 777 /data/busybox
3.从busybox中导出需要支持的命令:
(1)建立shell
- mount -o remount /dev/block/mmcblk0p9 /system
- cd /system/bin;
- rm sh;
- ln -s /data/busybox sh
(2) 在/system/bin中建立如下软连接:这里的删除要放在后面执行,因为,如果先执行rm rm,结果会导致之后的rm不可用。
- mount -o remount /dev/block/mmcblk0p9 /system
- cd /system/bin
- rm dirname
- ln -s /data/busybox dirname
- rm basename
- ln -s /data/busybox basename
- rm mkdir
- ln -s /data/busybox mkdir
- rm mktemp
- ln -s /data/busybox mktemp
- rm awk
- ln -s /data/busybox awk
- rm grep
- ln -s /data/busybox grep
- rm sed
- ln -s /data/busybox sed
- rm cut
- ln -s /data/busybox cut
- rm free
- ln -s /data/busybox free
- rm head
- ln -s /data/busybox head
- rm ldd
- ln -s /data/busybox ldd
- rm fdformat
- ln -s /data/busybox fdformat
- rm touch
- ln -s /data/busybox touch
- rm tr
- ln -s /data/busybox tr
- rm rm
- ln -s /data/busybox rm
4.另开一个终端,导入编译好的binary(之前编译生成的/opt/ltp下的所有文件)
adb push /opt/ltp /data/
5.设置权限。
adb shell下,
-cd /data
-/data/busybox chmod 777 ltp -R
三、LTP测试运行:
1.在adb shell中运行如下命令:
mount -o remount rootfs /
2.运行LTP测试的命令:
cd /data/ltp
/data/busybox ./runltp -p -l /tmp/resultlog.20051221 -d /tmp -o/tmp/ltpscreen.20051221 -t 1m
./runltp -p -l /tmp/resultlog.20051221 -d /tmp -o /tmp/ltpscreen.20051221 -t1m
这里的1m代表1分钟,时间可以设定。
备注:
1.如在运行ltp测试命令后,终端显示无法创建tmp,应在终端提示无法自动建立的位置手动建立一个tmp目录。
2.如遇到终端提示,有些命令不可用或无法找到等情况,在步骤二的3(2)中将命令重新链接。
0 0
- ltp交叉编译测试
- ltp交叉编译测试
- ltp 交叉编译 出现error 解决
- LTP在arm-linux-交叉编译环境上的安装
- Ubuntu 10.04编译LTP
- LTP 本地编译安装
- 哈工大LTP编译使用
- LTP测试LINUX
- LTP 测试分析
- LTP 测试分析
- LTP--Linux 测试工具
- 浅析ltp测试流程
- ALSA交叉编译与测试
- 交叉编译并测试lame
- ALSA交叉编译与测试
- ALSA交叉编译与测试
- sqlite 交叉编译安装测试
- ALSA交叉编译与测试
- 决策树在处理缺失值的优点和原理-学习历程
- O_EXCL的作用(原子操作)
- iOS开发之通讯录
- CodeForces 710D Two Arithmetic Progressions(数学题)
- ue4打包示例
- ltp交叉编译测试
- Switcheroo Redirector 重定向chrome插件 谷歌插件
- fragment 传递数据
- 解决Windows 7下IE11无法卸载、无法重新安装,提示安装了更新的IE版本
- ODI环境搭建_03安装Oracle中间件
- 跨越opengl和d3d的鸿沟(一):开篇
- html5移动端知识点总结(一)
- zabbix3.0.4导入中文模板后乱码问题处理
- 杰出软件工程师的习惯