1、rz、sz命令源码下载
下载网址:https://ohse.de/uwe/software/lrzsz.html
2、源码编译
tar -zxvf lrzsz-0.12.20.tar.gz
cd lrzsz-0.12.20
./configure
make CC=aarch64-mix410-linux-gcc #指定芯片平台的交叉编译链
3、源码编译遇到的问题
3.1、报错打印
(1)报错显示在编译sz、rz命令时还依赖libnsl.so库,当前编译时找不到libnsl库;
(2)libnsl是Unix/Linux系统下的一个开源C语言库,全称为“network services library”,提供了对许多网络服务程序的网络接口调用。其主要功能包括获取主机名、网络名称解析、套接字操作、RPC服务等;
3.2、获取libnsl库
(1)去网上下载libnsl库的源码,用芯片平台的交叉编译链进行编译,部署到lrzsz的编译环境中;(编译libnsl可能还会遇到问题,需要自行解决)
(2)在交叉编译链里查找是否存在libnsl库,从上面图片可知,在我使用的交叉编译链里是存在libnsl库的,其中芯片平台对应的是“/opt/aarch64-mix410-linux/target/lib/libnsl-2.31.so”;
总结:缺少的库都可以先去交叉编译链里查找是否存在该库,简单省事;
3.3、修改Makefile
#屏蔽掉原来引用libnsl的地方
#LIBS = -lnsl
LIBS =lsz_DEPENDENCIES += ../lib/libnsl.solrz_DEPENDENCIES = ../lib/libnsl.so
(1)将“/opt/aarch64-mix410-linux/target/lib/libnsl-2.31.so”拷贝到编译lrzsz编译环境中,我是将其拷贝到lib目录下,重命名为libnsl.so;
(2)按照上面的代码,修改src/Makefile;
4、文件系统部署
编译完成后会在src目录下生成lsz和lrz命令,重命名成rz和sz,直接拷贝到板子文件系统的/bin、/sbin、/usr/bin、/usr/sbin等已经导出到PATH环境变量的其中一个路径即可;
5、rz、sz命令使用
5.1、设置secureCRT软件
(1)Windows端需要能支持Zmodem的telnet/ssh客户端,比如secureCRT;
(2)使能Zmodem,设置上传和下载的目录,将来从板子下载文件和向板子上传文件都会将文件放在对应的目录;
5.2、从板子下载文件
/var/tmp/share # sz /etc/SigFile
random: crng init done
/var/tmp/share # ./sz_cry /etc/SigFileList
rzzmodem trl+C ȡ
正在传输 SigFileList...100% 939 939 /0:00:01 0 /var/tmp/share #
(1)下载命令:sz + 需要下载的文件;
(2)文件会存放在之前设置的下载目录里;
5.3、向板子上传文件
(1)运行命令rz,secureCRT就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到当前目录,注意当前目录要有写权限;
(2)单独使用rz命令会有两个问题:上传中断、上传文件变化,解决办法是使用“rz -be”;
(3)-b:用binary的方式上传下载,不接受字符为ASCII;
(4)-e:强制escape所以控制字符,比如ctrl+x;