ARM移植rz和sz命令

2019-07-13 02:12发布

data/attach/1907/8d2rq1x16msg9rgolc50utw0aqjobgz6.jpg 嵌入式Linux移植rz和sz命令
rz、sz是Linux/Unix 同Windows 进行ZModem 文件传输的命令行工具,windows 端需要支持ZModem 的telnet/ssh 客户端,例如:SecureCRT。 运行命令rz,即是接收文件,SecureCRT就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到当前目录 (默认使用二进制方式传送),运行命令sz …(可以同时传送 多个文件)就是发文件到windows上。
rz、sz 传输文件是通过串口进行传输,传输速率较慢,只适用于小文件的传输。
1、下载rzsz源码包 http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz 我在网上尝试找了一下,没有找到下载文件。感兴趣的可以自己去尝试下载源码。这里百度rzsz 源码下面可以下载到 如果在Linux系统命令行下,可以使用wget 命令进行下载。
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz
2、解压rzsz 文件。 使用tar xvzf 命令进行解压。使用-C选项可以解压到指定目录下 [root@codeMonkey rzsz]# tar xvzf rzsz-3.48.tar.gz -C /root/ARM/ 解压完成后可以在解压的目录中看到一个src 的文件。
3、修改Makefile 文件。 将第3行和第4行修改成如下所示: CC=arm-linux-gcc OFLAG= -O -DREGISTERED -static第3行的意思是指定交叉编译器,第4行的意思是去掉"UNREGISTERED COPY"提示,并且使用静态编译。 注意:这里一定要指定静态编译! 因为第一次我并没有加-static 选项,编译出来的命令下载到根文件系统的/usr/bin 目录中。执行rz 命令的时候,系统提示找不到该命令!移植的Linux系统一般是没有移植库文件的,所以动态编译出来的程序会提示找不到。这也间接的证明了Linux系统下的编译默认是使用的动态编译。 关于静态编译和动态编译的区别,请自行百度!这里不再解释 也可以参考这篇:http://blog.csdn.net/zhengqijun_/article/details/51849968
4、执行make posix 生成可执行程序。 [root@codeMonkey src]# make posix arm-linux-gcc -O -DREGISTERED -static -DPOSIX -DMD=2 rz.c -o rz size rz text data bss dec hex filename 501436 2120 17232 520788 7f254 rz rm -f rb rx rc ln rz rb ln rz rx ln rz rc arm-linux-gcc -O -DREGISTERED -static -DPOSIX sz.c -o sz size sz text data bss dec hex filename 508884 2176 50096 561156 89004 sz rm -f sb sx zcommand zcommandi ln sz sb ln sz sx ln sz zcommand ln sz zcommandi 使用ls 命令进行查看
可以发现生成了很多可执行文件,如rz、sz、sx 等。
5、将生成的可执行文件复制到根文件系统的/usr/bin目录下 使用cp 命令进行赋值 [root@codeMonkey src]# cp gz rb rc rx rz sb sx sz zcommand zcommandi ../../rootfs/usr/bin
6、下载到开发板中运行。 Linux系统启动成功后,执行rz 命令进行文件的传输。 [root@MINI2440 /]# rz rz ready. Type "sz file ..." to your modem program Starting zmodem transfer. Press Ctrl+C to cancel. Transferring test.txt... Transferring test.txt... ?rz 3.48 01-27-98 finished.这里我传输了一个test.txt 文件。如果执行rz 命令后能出现下面的图,应该就没有什么问题。