交叉编译tmux【转】 sky

转自:https://www.cnblogs.com/pengdonglin137/p/11960623.html

作者:彭东林

邮箱: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

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

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

启动tmux

tmux new -s wk

完。

【作者】张昺华
【大饼教你学系列】https://edu.csdn.net/course/detail/10393
【新浪微博】 张昺华--sky
【twitter】 @sky2030_
【微信公众号】 张昺华
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/sky-heaven/p/15531309.html