交叉编译和使用HTOP
1、什么是htop
htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面。但是top已经非常陈旧,不支持鼠标点击操作,不支持查看进程的各个子线程的信息(对于我来说,这个非常重要,有助于分析代码的效率并优化),不支持color显示,易用性较差(曾有人提出改进top但未被接受)。htop官网对htop和top的比较,如下示例图为我的ubuntu12.4的htop效果:
- In 'htop' you can scroll the list vertically and horizontally to see all processes and complete command lines.
- In 'top' you are subject to a delay for each unassigned key you press (especially annoying when multi-key escape sequences are triggered by accident).
- 'htop' starts faster ('top' seems to collect data for a while before displaying anything).
- In 'htop' you don't need to type the process number to kill a process, in 'top' you do.
- In 'htop' you don't need to type the process number or the priority value to renice a process, in 'top' you do.
- 'htop' supports mouse operation, 'top' doesn't
- 'top' is older, hence, more used and tested.
2、下载htop
htop官网提供两种下载:部分Linux发行版本的预编译二进制文件,以及源代码方式。
htop官网:http://hisham.hm/htop/index.php?page=downloads
github上的源码:https://github.com/hishamhm/htop (git clone获取)
3、解决htop的编译依赖
htop编译时,必须有ncurses库的支持,所以编译htop之前,必须确保已存在ncurses库,交叉编译前需编译对应的ncurses库。
ncurses最新版本源码:ftp://invisible-island.net/ncurses/ncurses.tar.gz
1 $ tar -zxvf ncurses-5.9.tar.gz 2 $ cd ncurses-5.9
#配置前,可使用./configure --help查看配置帮助
$ ./configure CC=arm-hisiv200-linux-gnueabi-gcc --prefix=$PWD/_install --host=arm-linux --with-shared #编译为共享库
$ make && make install
$ ls -lh _install/lib
total 4.5M
-rw-r--r-- root root 93K 5月 : libform.a
-rw-r--r-- root root 529K 5月 : libform_g.a
lrwxrwxrwx root root 5月 : libform.so -> libform.so.
lrwxrwxrwx root root 5月 : libform.so. -> libform.so.5.9
-rwxr-xr-x root root 68K 5月 : libform.so.5.9
-rw-r--r-- root root 51K 5月 : libmenu.a
-rw-r--r-- root root 321K 5月 : libmenu_g.a
lrwxrwxrwx root root 5月 : libmenu.so -> libmenu.so.
lrwxrwxrwx root root 5月 : libmenu.so. -> libmenu.so.5.9
-rwxr-xr-x root root 36K 5月 : libmenu.so.5.9
-rw-r--r-- root root 446K 5月 : libncurses.a
-rw-r--r-- root root 129K 5月 : libncurses++.a
-rw-r--r-- root root 2.3M 5月 : libncurses_g.a
lrwxrwxrwx root root 5月 : libncurses.so -> libncurses.so.
lrwxrwxrwx root root 5月 : libncurses.so. -> libncurses.so.5.9
-rwxr-xr-x root root 327K 5月 : libncurses.so.5.9
-rw-r--r-- root root 23K 5月 : libpanel.a
-rw-r--r-- root root 131K 5月 : libpanel_g.a
lrwxrwxrwx root root 5月 : libpanel.so -> libpanel.so.
lrwxrwxrwx root root 5月 : libpanel.so. -> libpanel.so.5.9
-rwxr-xr-x root root 15K 5月 : libpanel.so.5.9
lrwxrwxrwx root root 5月 : terminfo -> ../share/terminfo
Libncurses库用来在显示器上显示文本界面。典型例子:Linux内核的make menuconfig配置界面,busybox的make menuconfig,fdisk磁盘分区工具界面,甚至open suse的yasT2。
Libform库用于 在ncurses中使用表格。
Libmenu库用于在ncurses中使用菜单。
Libpanel库用于在ncurses中使用面板。
将编译好的这些动态库拷贝到htop的源码目录下。
htop的交叉编译流程类似:
1 $ ./configure CC=arm-hisiv200-linux-gnueabi-gcc --prefix=$PWD/_install
2 $ make && make install 3 $ ls -lh _install
4、 命令的挂载和执行
htop程序的执行需要libcurses和term的支持,执行之前请检查TERM环境变量的值(echo $TERM),以及TERMINFO的值(echo $TERMINFO,为空则必须保证/usr/share/terminfo存在对应的term程序)。
理想的状态是,将libcurses(放在/lib、/usr/lib 或/usr/local/lib)和htop直接拷贝到开发板上直接就能运行,但如果嵌入式Linux裁剪的太厉害,将/usr/share/terminfo目录裁剪了,htop将无法正常启动。此时可从别处拷贝terminfo目录。
最不理想的状态是板子将所有程序编译成了静态程序,同时裁撤了所有lib和/usr/share目录,且此时文件系统为只读,此时可以将机型对应的linux lib目录mount到板子上的/lib目录,同时将设置TERMINFO的环境变量为对应的terminfo目录(比如:export TERMINFO="/var/nfs/terminfo")。
举例:如$TERM=xterm,则/usr/share/terminfo/x/xterm必须存在。
5、htop的应用举例
详细应用请man htop查阅。
Shortcut Key | Function Key | Description |
---|---|---|
h | F1 | Invoke htop Help |
S | F2 | Htop Setup Menu |
/ | F3 | Search for a Process |
I | F4 | Invert Sort Order |
t | F5 | Tree View |
> | F6 | Sort by a column |
[ | F7 | Nice - (change priority) |
] | F8 | Nice + (change priority) |
k | F9 | Kill a Process |
q | F10 | Quit htop |
此段落来自:http://www.lylinux.org/linux-top%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9B%BF%E4%BB%A3%E8%80%85htop.html
交叉编译和使用HTOP的更多相关文章
- 交叉编译HTOP并移植到ARM嵌入式Linux系统
原创作品,允许转载,转载时请务必以超链接形式标明文章.作者信息和本声明,否则将追究法律责任. 最近一直在完善基于Busybox做的ARM Linux的根文件系统,由于busybox是一个精简的指令集组 ...
- Linux主机上使用交叉编译移植u-boot到树莓派
0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jes ...
- Ubuntu 16.04 安装 arm-linux-gcc 嵌入式交叉编译环境 问题汇总
闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充 ...
- Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1
交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...
- Linux主机上实现树莓派的交叉编译及文件传输,远程登陆
0.环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS:官网下的的raspb ...
- Linux htop工具使用详解
一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件Htop,姑且称之为top的增强版,相比top其有着很多自身的优势.如下: 两者相比起来,top比较繁琐 默认 ...
- FFmpeg和X264的交叉编译环境
在下载好了FFmpeg和X264的源码包之后,在Linux下进行安装的基本流程就是切换到其源码的根目录,然后以此执行以下命令.基本上所有的开源源码包的默认编译安装都是这三步. ./configure ...
- Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程)
Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级 ...
- Ubuntu 树莓派2b交叉编译环境
在一个平台上生成另一个平台上的可执行代码.为什么要大费周折的进行交叉编译呢?一句话:不得已而为之.有时是因为目的平台上不允许或不能够安装所需要的编译器,而又需要这个编译器的某些特征:有时是因为目的平台 ...
随机推荐
- 学习日记之单例模式和Effective C++
单例模式(Singleton):保证一个类仅有一个实例,并提供一个訪问它的全局訪问点. (1),通常我们能够让一个全局变量使得一个对象被訪问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身 ...
- bigdata_hadoop集群配置_内存分配
haoop集群 做好内存管理跟重要,不然经常会给抛出个 OutMemory ,内存溢出 以horntonworks给出推荐配置为样本,给出一种常见的Hadoop集群上各组件的内存分配方案.配置时 ...
- 在vc正在使用xtremetoolkit接口库-----使用简单的控制
首先,我们需要在StdAfx.h增加头文件: #include "XTToolkitPro.h" #include "XTPResource.h" 在test. ...
- C#操作Xml:使用XmlReader读Xml
XmlDocument和XElement在读取Xml时要将整个Xml文档放到内存中去操作,这样做操作简单,但是很费内存和IO(可能是磁盘IO或者网络IO):而在有些场景下我们必须考虑尽可能节省内存和I ...
- Cannot find ActionMappings or ActionFormBeans collection
出现此问题.首先检查web.xml,的主要结构被认为是在下面的图: 再检查struts-config.xml.确认是否有<form-beans>和<action-mappings&g ...
- SVN提交忽略*.class、.classpath、.mymetadata、.project、.settings、.myeclipse和其他非版本控制文件
1.忽略*.class 在TortoiseSVN -->setting(设定)--规设置 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveHVrZTY ...
- 【百度地图API】多家地图API内存消耗对比测验(带源码)
原文:[百度地图API]多家地图API内存消耗对比测验(带源码) 任务描述: 啊,美妙的春节结束了.酸奶小妹和妈妈的山西平遥之旅也宣告成功!距离平遥古城7km,有一个同样身为“世界文化遗产”的寺庙,叫 ...
- Mac OS X于Android Kernel下载方法
于上一篇日志中,我总结了大家提供的下载Android源代码的方法.这里再简单总结一下内核的下载方法. 參考这里的介绍:http://source.android.com/source/building ...
- SQL Server中存储过程比直接运行SQL语句慢的原因
原文:SQL Server中存储过程比直接运行SQL语句慢的原因 在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1. 存储过程只在创造时进行编译即可,以 ...
- jquery插件分类与编写详细讲解
jquery插件分类与编写详细讲解 1. 插件种类 插件其实就是对现有的方法(或者叫函数)做一个封装,方便重用提高开发效率. jQeury主要有2种类型 1)实例对象方法插件 开发能让所有的j ...