作者:彭东林
邮箱: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

完。