ARM移植rz和sz命令

来源:互联网 发布:网络系统解决方案 编辑:程序博客网 时间:2024/05/17 21:01

嵌入式Linux移植rz和sz命令

rz、sz是Linux/Unix 同Windows 进行ZModem 文件传输的命令行工具,windows 端需要支持ZModem 的telnet/ssh 客户端,例如:SecureCRT。

运行命令rz,即是接收文件,SecureCRT就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到当前目录 (默认使用二进制方式传送),运行命令sz <file1name> <file2name>…(可以同时传送 多个文件)就是发文件到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-gccOFLAG= -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 posixarm-linux-gcc   -O -DREGISTERED -static -DPOSIX -DMD=2 rz.c -o rzsize rz   text   data    bss    dec    hexfilename 501436   2120  17232 520788  7f254rzrm -f rb rx rcln rz rbln rz rxln rz rcarm-linux-gcc   -O -DREGISTERED -static -DPOSIX sz.c -o szsize sz   text   data    bss    dec    hexfilename 508884   2176  50096 561156  89004szrm -f sb sx zcommand zcommandiln sz sbln sz sxln sz zcommandln 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 /]# rzrz ready. Type "sz file ..." to your modem programStarting zmodem transfer.  Press Ctrl+C to cancel.Transferring test.txt...Transferring test.txt...?rz 3.48 01-27-98 finished.
这里我传输了一个test.txt 文件。如果执行rz 命令后能出现下面的图,应该就没有什么问题。