ARM平台移植bash

前言】近期向RK3568平台移植EtherCAT时发现目标板中没有bash,只有sh。如果想要shell脚本在目标机中运行,则需要把脚本中的“#!/bin/bash”改为“#!/bin/sh”。通过这种方式虽然可以执行脚本,但是脚本中的许多bash语法是不支持的,脚本运行时会报错,因此最好的解决办法就是将bash移植到ARM平台上。

1、环境说明

1.1、硬件平台

        M3568-4GF16GLI-T(RK3568)

1.2、Linux内核版本

        Linux4.19.193

2、下载bash

Index of /gnu/bash

3、解压bash源码

将官网下载的bash压缩包下载到编译平台后,进行解压。输入如下命令:

tar -zxvf bash-5.2.21.tar.gz

4、配置编译

./configure CC=aarch64-buildroot-linux-gnu-gcc --prefix=/home/vmuser/workspace/Bash/output  --host=aarch64-buildroot-linux-gnu --target=aarch64-buildroot-linux-gnu --enable-static-link --enable-history --without-bash-malloc

注意:--prefix指定编译后镜像和库文件安装的位置,CC 指定交叉编译工具。

特别说明:

使用最新版本的bash源码(5.2.21版本)会报如下错误:

 该错误目前未找到合适的解决方案,肯定各位大佬留言指导。

我目前使用的版本是:4.4版本,实测可用。(源码包为:bash-4.4.tar.gz

4.4版本之后的版本均有上述的错误。

5、设置静态编译

在Makefile的CFLAGS后面加上-static 选项,如下所示:

CFLAGS = -g -O2 -static

6、编译源码

make

7、安装

make install

安装成功后在安装路径 /home/vmuser/workspace/Bash/output下生成两个文件夹 bin和share。

8、拷贝bash可执行文件

将bin目录中的bash可执行文件下载到开发板/bin目录中,并修改执行权限:

chmod 775 /bin/bash

至此bash已经移植到了ARM平台上了。

结束语】因技术能力有限,文章如有不妥之处,恳请各位技术大佬留言指正!  

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值