bash shell移植到ARM Linux教程

应用移植 5045浏览 4评论

一般情况下,在ARM开发板中都会有sh,这是随busybox携带的脚本工具。当然,如果是完整版的busybox,里面也会有bash。如果想将shell脚本在ARM目标机中运行,则需要把脚本第一行的#!/bin/bash改为#!/bin/sh。但这样虽然可以执行脚本,但是脚本中的许多语法是不支持的,例如:判断 if [ -d /usr ] ; if [ -b /dev/sda1 ]等等,脚本运行时会报错,解决方法就是将bash移植到目标板。

步骤:

1 下载最新版bash

地址:http://www.gnu.org/software/bash/bash.html

2 解压

将下载的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、配置

编译之前,要进行配置,命令:

$ 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:指定编译后镜像和库文件安装的位置,这些我们要放到目标板上的

4 设置静态编译

打开 Makefile 文件,

$ vi Makefile

在 Makefile 的 CFLAGS 后面加上 -static 选项:

CFLAGS = -g -O2 -static

然后按ESC返回命令模式,输入 x 回车,保存并退出vi。

5 编译

编译并安装:

$ make & make install

 

6 复制到目标板

安装成功后在安装路径 /home/veryarm/bash/install 下生成两个目录 bin 和 share,将bin中的 bash 可执行文件复制至开发板 /bin 中,并修改执行权限:

# cp bash /bin
# chmod +x /bin/bash

 

7 测试

在开发板中运行bash

# bash

在开发版中运行相关脚本(自行编写):

# ./test.sh

恭喜,移植成功!

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. 按照上面所说以成功移植到openwrt,但是,使用该bash的时候按删除键无法删除字符
    heln 2年前 (2015-09-18) 回复 编辑
  2. 韩美女车模 1年前 (2015-10-05) 回复 编辑
  3. 行,有意义,我顶 谢谢您了
    苏巧容 1年前 (2016-01-23) 回复 编辑