前两天, 装了 minicom, 准备用于在开发板和 Ubuntu PC 之间传输文件. 由于之前只用 minicom 简单连接了开发板(minicom 的简单使用), 并没有传输文件的需求, 没想到传输文件并不能直接 Ctrl+A -> S
这样子, 还要借助 lrz, lsz 才能在两端之间相互传输文件.
下载完 lrzsz 源码后, 编译还是相对比较简单的. 只是中间出现了一些问题, 相信要用到这个传输文件的, 编译方面的应该都多少了解点吧?
1. 我的编译环境
我的编译环境是: Ubuntu 16.04 64位.
2. 源码下载地址
源码: lrzsz-0.12.20.tar.gz
源码下载地址: http://www.ohse.de/uwe/software/lrzsz.html
3. 配置编译环境
我是这样编译的:
# 1. 首先生成自己的配置文件
[root@ lrzsz]# ./configure --cache-file=my_lrzsz.cache
# 这一步会检查并在当前目录下生成文件 my_lrzsz.cache, 直接 ./configure 默认生成的文件名为 config.h !
# 2. 配置交叉编译器 (直接修改 my_lrzsz.cache 文件)
[root@ lrzsz]# vim my_lrzsz.cache
# 将 ac_cv_prog_CC=${ac_cv_prog_CC=gcc} 最后的 gcc 编译器修改为开发板的编译工具
# 我这里修改为:
# ac_cv_prog_CC=${ac_cv_prog_CC=arm-linux-gcc}
# 3. 利用 my_lrzsz.cache 配置文件重新配置工程
[root@ lrzsz]# ./configure --cache-file=./my_lrzsz.cache
# 4. 最后 make 通过就行了
[root@ lrzsz]# make
注: 这里要注意了, 如果使用自己生成的配置文件 xxx.cache, 在第 3 步要加路径 ./
, 如 ./configure --cache-file=./my_lrzsz.cache
, 否则会报如下错误:
loading cache myname_xxx.cache
./configure: 509: .: myname_xxx.cache: not found
4. 出现的问题及解决方法
我在 make 的时候出错了:
..........
xxxxxxxx/bin/ld: cannot find -lnsl
collect2: error: ld returned 1 exit status
Makefile:219: recipe for target 'lrz' failed
make[2]: *** [lrz] Error 1
..........
这应该是 nsl 动态库没找到, 可以直接去掉 nls, 修改文件 config.h 如下:
[root@ lrzsz]# vim config.h
找到:
/* Define to 1 if NLS is requested. */
#define ENABLE_NLS 1
将 1
改成 0
就可以再 make 试试:
#define ENABLE_NLS 0
* 如果这时候编译不通过, 可以再修改一个地方试试, 同样修改 config.h 文件, 找到:
ac_cv_lib_nsl_gethostbyname=${ac_cv_lib_nsl_gethostbyname='yes'}
如果最后是 yes
, 将它改成 no
, 然后再 make:
ac_cv_lib_nsl_gethostbyname=${ac_cv_lib_nsl_gethostbyname='no'}
5. 使用方法
使用方法就简单了, 但是你会不会这样想: 我 TM 还没把 lrzsz 传到开发板呢, 我用什么传 !? 就是传不了文件才装 lrzsz 的...
当然, 传文件的方式有很多种, 好像有点麻烦, 我没去弄, 所以就把开发板连上网, 先传到网盘再下载下来, 放到 /usr/bin
, 简直了!
编译出来的 lrz
lsz
在 src
目录下, 直接放到开发板的 /usr/bin
目录下就行了. 我们要的只是这两个文件, 只要生成了这两个, 基本上算是编译完成了.
! 使用方法:
1. 就是在开发板端, 进入 minicom 配置的上传目录, 运行 lrz:
root@ROUTER:~/upload_dir# lrz
��z waiting to receive.**B0100000023be50
2. 在 PC 端 minicom 中 Ctrl+A -> S
, 选择文件上传就可以看到文件了.
.
[1] lingdxuyan. Ubuntu下安装配置minicom并实现通过minicom传输文件. Linux时代 . 2011-02-03
[2] 陈狗蛋儿. lrzsz工具移植-交叉编译. 博客园. 2016-03-28 18:10
[3] skywalker_ll. 交叉编译lrzsz. CSDN. 2009-08-03 16:29
网友评论