交叉编译tmux

作者:彭东林

邮箱:[email protected]

 

参考

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

可以根据实际情况修改终端大小。查看当前终端大小:stty size 或者 stty -a

[root@aarch64 ]# stty rows 30 cols 120
[root@aarch64 ]# stty size
30 120

 

启动tmux

tmux new -s wk

 

交叉编译tmux_第1张图片

完。

你可能感兴趣的:(交叉编译tmux)