您的位置:首页 > 运维架构 > Shell

编译bash

2014-03-08 14:18 183 查看
今天在mips开发板上执行一个循环脚本,出现错误。

本来脚本在ubuntu主机上运行很正常,经过查找发现原来在busybox下为了提高效率运行的是dash,而它的脚本相对与bash有些改变,有些甚至怪异。都改了比较麻烦不如干脆直接编译bash来的快些。

首先在网上下载bash源码(官网的速度很慢,可以去csdn或者chinaunix上)bash-3.2.tar.gz

下载完成后解压进入源码目录

首先就是执行配置脚本:

$ ./configure --prefix=`pwd` --host=mipsel-linux --enable-static-link --without-bash-malloc
选项 --enable-static-link ,指定bash为静态编译。

选项 --without-bash-malloc ,指定bash不使用自带的malloc,而是使用glibc的malloc

配置完毕后make一下就生成了bash可执行文件,此时还比较大可以用strip减少体积:

$ ls -lh bash
-rwxrwxr-x 1   5.0M Mar  8 14:14 bash
$ mipsel-linux-strip bash
$ ls -lh bash
-rwxrwxr-x 1  1.6M Mar  8 14:15 bash
$ file bash
bash: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, for GNU/Linux 2.4.0, stripped


然后把这个bash拷贝到 busybox的 bin 目录下,在脚本开头指定即可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: