- S1 n: ?& p0 X: }7 Y$ a一般情况下,在 ARM开发板中都会有sh,这是随busybox携带的脚本工具。当然,如果是完整版的busybox,里面也会有bash。如果想将shell脚本在ARM目标机中运行,则需要把脚本第一行的#!/bin/bash改为#!/bin/sh。但这样虽然可以执行脚本,但是脚本中的许多语法是不支持的,例如:判断 if [ -d /usr ] ; if [ -b /dev/sda1 ]等等,脚本运行时会报错,解决方法就是将bash移植到目标板。 步骤: 1 下载最新版bash2 解压将下载的bash压缩包解压,命令: $ mkdir /home/veryarm/bash # 创建bash工作目录$ cp bash-4.2.tar.gz /home/veryarm/bash # 复制安装包$ cd ~/bash # 进入/home/veryarm/bash目录$ tar zxvf bash-4.2.tar.gz # 解压3 e9 A& q1 x# P% @
3、配置编译之前,要进行配置,命令: $ mkdir install # 创建安装目录$ cd bash-4.2 # 进入目录$ export PATH=$PATH:/usr/local/arm-2010q1/bin/ # 添加交叉编译器路径到PATH环境变量中$ ./configure CC=arm-none-linux-gnueabi-gcc --prefix=/home/veryarm/bash/install --host=arm-linux --target=arm-none-linux-gnueabi --enable-static-link --enable-history --without-bash-malloc其中: - CC:指定交叉编译工具;
- --prefix:指定编译后镜像和库文件安装的位置,这些我们要放到目标板上的
! U2 x! C' h( X( i4 g# u$ h/ m, @ 4 设置静态编译打开 Makefile 文件, $ vi Makefile9 ^ m$ O! q. e5 p/ L- n, j$ F
; @3 m6 N- }. g9 d
在 Makefile 的 CFLAGS 后面加上 -static 选项: CFLAGS = -g -O2 -static然后按ESC返回命令模式,输入 x 回车,保存并退出vi。 5 编译编译并安装: $ make & make install
/ q' ~# h ^0 V* ]6 复制到目标板安装成功后在安装路径 /home/veryarm/bash/install 下生成两个目录 bin 和 share,将bin中的 bash 可执行文件复制至开发板 /bin 中,并修改执行权限: # cp bash /bin# chmod +x /bin/bash
- a* S) k1 J' s# b: C7 测试在开发板中运行bash # bash在开发版中运行相关脚本(自行编写): # ./test.sh恭喜,移植成功!
/ U4 G8 S# W% q9 p6 }% W$ \ |