作者:彭东林
邮箱:pengdonglin137@163.com
参考
https://gist.github.com/tessus/5e118d44261a6ab2f198
环境
Qemu-4.1
Linux-4.14
ARM64
aarch64-linux-gnu-gcc 8.3
概述
在进行嵌入式开始时,经常会用到串口,这样就可以使用串口来登录到板子上,但是如果通过一个串口实现多个终端的功能的话,对于我们的开发调试就会更加方便,而tmux就提供了这样的功能。
下面介绍tmux如何静态交叉编译,使其运行在arm开发板上。
软件版本
tmux-2.1
libevent:2.1.10
ncurses-6.1
正文
交叉编译tmux需要libevent和ncurses两个软件包。
下载和编译libevent
1、下载libevent:https://github.com/libevent/libevent/releases/download/release-2.1.10-stable/libevent-2.1.10-stable.tar.gz
2、解压和交叉编译,下面是编译脚本:
1 ./configure --prefix=`pwd` \ 2 --host=aarch64-linux-gnu \ 3 --disable-shared 4 5 make 6 make install
下载和编译ncurses
1、下载ncurses: https://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz
2、解压和交叉编译,下面是编译脚本:
1 ./configure --prefix=`pwd` \ 2 --host=aarch64-linux-gnu \ 3 --with-default-terminfo-dir=/usr/share/terminfo \ 4 --with-terminfo-dirs="/etc/terminfo:/lib/terminfo:/usr/share/terminfo" 5 6 make 7 make install
下载和编译tmux
1、下载tmux:https://github.com/tmux/tmux/releases/download/2.1/tmux-2.1.tar.gz
2、解压和交叉编译,下面是编译脚本:
1 export CFLAGS="-I/home/pengdl/work/Third_Part/tmux/libevent-2.1.10-stable/include/ \ 2 -I/home/pengdl/work/Third_Part/tmux/ncurses-6.1/include \ 3 -I /home/pengdl/work/Third_Part/tmux/ncurses-6.1/include/ncurses" 4 5 export LDFLAGS="--static -L/home/pengdl/work/Third_Part/tmux/libevent-2.1.10-stable/lib/ \ 6 -L/home/pengdl/work/Third_Part/tmux/ncurses-6.1/lib" 7 8 ./configure --prefix=`pwd` \ 9 --host=aarch64-linux-gnu \ 10 --enable-static
上面就完成了交叉编译,然后将tmux可执行程序
拷贝terminfo配置文件
将terminfo配置文件拷贝到开发板上,可以只拷贝实际要用的:
# 在跟文件系统里创建如下目录 cd rootfs/ mkdir -p usr/share/terminfo/ # 拷贝PC上的terminfo文件 cp /lib/terminfo/* usr/share/terminfo/ -raf
下面是可用的TERM配置:
$ tree usr/share/terminfo/ usr/share/terminfo/ ├── a │ └── ansi ├── c │ ├── cons25 │ ├── cons25-debian │ └── cygwin ├── d │ └── dumb ├── E │ ├── Eterm │ └── Eterm-color -> Eterm ├── h │ └── hurd ├── l │ └── linux ├── m │ ├── mach │ ├── mach-bold │ ├── mach-color │ ├── mach-gnu │ └── mach-gnu-color ├── p │ └── pcansi ├── r │ ├── rxvt │ ├── rxvt-basic │ ├── rxvt-m -> rxvt-basic │ ├── rxvt-unicode │ └── rxvt-unicode-256color ├── s │ ├── screen │ ├── screen-256color │ ├── screen-256color-bce │ ├── screen-bce │ ├── screen-s │ ├── screen-w │ ├── screen.xterm-256color │ └── sun ├── v │ ├── vt100 │ ├── vt102 │ ├── vt220 │ └── vt52 ├── w │ ├── wsvt25 │ └── wsvt25m └── x ├── xterm ├── xterm-256color ├── xterm-color ├── xterm-debian -> xterm ├── xterm-mono ├── xterm-r5 ├── xterm-r6 ├── xterm-vt220 └── xterm-xfree86 13 directories, 43 files
启动开发板,查看当前TERM
[root@aarch64 ]# echo $TERM vt102
可以根据自己的喜好,选择相应的配置,个人感觉linux配置不过,设置方法:
export TERM=linux
修改终端size
stty rows 30 cols 120
可以根据实际情况修改终端大小。查看当前终端大小:
[root@aarch64 ]# stty rows 30 cols 120 [root@aarch64 ]# stty size 30 120
启动tmux
tmux new -s wk
完。