作者:彭东林

邮箱: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、解压和交叉编译,下面是编译脚本:

 ./configure --prefix=`pwd` \
--host=aarch64-linux-gnu \
--disable-shared make
make install

下载和编译ncurses

1、下载ncurses: https://ftp.gnu.org/gnu/ncurses/ncurses-6.1.tar.gz

2、解压和交叉编译,下面是编译脚本:

 ./configure --prefix=`pwd` \
--host=aarch64-linux-gnu \
--with-default-terminfo-dir=/usr/share/terminfo \
--with-terminfo-dirs="/etc/terminfo:/lib/terminfo:/usr/share/terminfo" make
make install

下载和编译tmux

1、下载tmux:https://github.com/tmux/tmux/releases/download/2.1/tmux-2.1.tar.gz

2、解压和交叉编译,下面是编译脚本:

 export CFLAGS="-I/home/pengdl/work/Third_Part/tmux/libevent-2.1.10-stable/include/ \
-I/home/pengdl/work/Third_Part/tmux/ncurses-6.1/include \
-I /home/pengdl/work/Third_Part/tmux/ncurses-6.1/include/ncurses" export LDFLAGS="--static -L/home/pengdl/work/Third_Part/tmux/libevent-2.1.10-stable/lib/ \
-L/home/pengdl/work/Third_Part/tmux/ncurses-6.1/lib" ./configure --prefix=`pwd` \
--host=aarch64-linux-gnu \
--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 directories, files

启动开发板,查看当前TERM

[root@aarch64 ]# echo $TERM
vt102

可以根据自己的喜好,选择相应的配置,个人感觉linux配置不过,设置方法:

export TERM=linux

修改终端size

stty rows  cols 

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

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

启动tmux

tmux new -s wk

完。

交叉编译tmux的更多相关文章

  1. Linux主机上使用交叉编译移植u-boot到树莓派

    0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...

  2. Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总

    闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...

  3. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

  4. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  5. 打造高效前端工作环境 - tmux

    打造高效前端工作环境 - tmux 前言  现在前端开发可不容易啊,先打开个VIM,然后再打开个lite-server,一不小心写个ES2015还要打开个gulp来做预编译,如果能把这么多个窗口放在一 ...

  6. Linux主机上实现树莓派的交叉编译及文件传输,远程登陆

    0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...

  7. 在tmux中的vi 上下左右键变为了ABCD等字符

    在本机上用vim编辑时,上下左右键没有问题,但是在tmux中确出现ABCD等字符. 原因是在tmux这个终端,默认做了字符转换,网上搜了很多答案,解决问题的设置是: set term=xterm

  8. FFmpeg和X264的交叉编译环境

    在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...

  9. tmux常用快捷键

    首先输入命令开始. $ tmux 然后,基本组合 Ctrl+b(同时按下ctrl和b),按完松开 松开后,按%(即同时按下shift和5),是水平分割 按“(即同时按shift和'),是纵向分割 按上 ...

随机推荐

  1. leetcode203. 移除链表元素

    方法一(删除头结点时另做考虑) class Solution { public: ListNode* removeElements(ListNode* head, int val) { if(head ...

  2. appium--解决中文输入不了的问题

    配置 from appium import webdriver desired_caps={} desired_caps['platformName']='Android' #模拟器 desired_ ...

  3. 洛谷 P4290 [HAOI2008]玩具取名

    传送门 思路 博客半年没更新了,来更新个博文吧 在\(dsr\)聚聚博客的帮助下,我用半个上午和一个中午的时间苟延残喘地完成了这道题 先是读题目读大半天,最后连个样例都看不懂 之后又是想思路,实在想不 ...

  4. MATLAB 赋值命令计算结果在命令窗口显示结果

    MATLAB 赋值命令计算结果在命令窗口显示结果 MATLAB如何控制计算结果是否显示在命令窗口 在运算结方程或者设定参数后面加分号也就是 ; 命令窗口就不会显示这些参数或结果了.举个例子clccle ...

  5. AtCoder Grand Contest 039 简要题解

    从这里开始 比赛目录 Problem A Connection and Disconnection 简单讨论即可. Code #include <bits/stdc++.h> using ...

  6. BS项目启动任意EXE文件或者CS项目

    1. 基于注册表启动exe程序 1. 桌面新建注册表执行文件:protocal.reg 2. 任意文本编辑器打开该文件 Windows Registry Editor Version 5.00 [HK ...

  7. MySQL基础指令和安装

    数据库概念 那Mysql能干嘛呢?它就是一款软件,安装在任何一台计算机或者服务器上的时候,只要我告诉它创建一个文件,新增一个数据,删除一个数据它就能帮我去做想要的操作 那我们暂且能不能理解为mysql ...

  8. java ssh免密登录

    package com.meituan.stabletest.sshtest; import java.io.InputStream; import com.jcraft.jsch.Channel; ...

  9. 面试官:”准备用HashMap存1w条数据,构造时传10000会触发扩容吗?“

    通常在初始化 HashMap 时,初始容量都是根据业务来的,而不会是一个固定值,为此我们需要有一个特殊处理的方式,就是将预期的初始容量,再除以 HashMap 的装载因子,默认时就是除以 0.75. ...

  10. Serverless 与容器决战在即?有了弹性伸缩就不一样了

    作者 | 阿里云容器技术专家 莫源  本文整理自莫源于 8 月 31 日 K8s & cloudnative meetup 深圳场的演讲内容.****关注"阿里巴巴云原生" ...