dd源码路径
http://ftp.gnu.org/gnu/coreutils/
配置
x86平台
./configure
ARM平台
./configure --host=arm-linux CC=/home/wangyubo/openwrt/staging_dir/toolchain-arm64_gcc-orionis/usr/bin/aarch64-buildroot-linux-gnu-gcc
编译
make
编译后文件在src/dd
问题
拷贝到开发板中运行提示如下:
root@www:/root# ./dd
/bin/sh: ./dd: not found
开发板有/bin/sh和/bin/ash解析器,默认使用/bin/ash,dd源码默认/bin/bash,修改配置重新编译:
root@www:~# echo $SHELL
/bin/ash
CONFIG_SHELL=/bin/sh ./configure --host=arm-linux CC=/home/wangyubo/openwrt/staging_dir/toolchain-arm64_gcc-orionis/usr/bin/aarch64-buildroot-linux-gnu-gcc CONFIG_SHELL=/bin/sh
还是提示:/bin/sh: ./dd: not found,这是为何??待解决。。。
修改为:CONFIG_SHELL=/bin/bash
root@www:/vdr# ./dd-bash
-ash: ./dd-bash: not found
编译器没有问题,大小端没有问题:
[yubo.wang@localhost coreutils-8.30]$ readelf -h src/dd
ELF 头:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
类别: ELF64
数据: 2 补码,小端序 (little endian)
版本: 1 (current)
OS/ABI: UNIX - System V
ABI 版本: 0
类型: EXEC (可执行文件)
系统架构: AArch64
版本: 0x1
入口点地址: 0x4039c0
程序头起点: 64 (bytes into file)
Start of section headers: 346112 (bytes into file)
标志: 0x0
本头的大小: 64 (字节)
程序头大小: 56 (字节)
Number of program headers: 7
节头大小: 64 (字节)
节头数量: 36
字符串表索引节头: 33
应该不是shell的问题,可能是其他兼容性的问题,待解决。。。
注意
编译后不能安装,安装后会破坏Linux系统环境如下,会导致很多命令在/usr/local/bin找不到报错:
declare -x PATH="/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/yubo.wang/.local/bin:/home/yubo.wang/bin"
[yubo.wang@localhost ~]$ ls
-bash: /usr/local/bin/ls: 无法执行二进制文件
make uninstall卸载掉后就正常了:
PATH="/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/yubo.wang/.local/bin:/home/yubo.wang/bin"