交叉编译和使用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
 3 #配置前,可使用./configure --help查看配置帮助
 4 $ ./configure CC=arm-hisiv200-linux-gnueabi-gcc --prefix=$PWD/_install --host=arm-linux --with-shared #编译为共享库
 5 $ make && make install
 6 $ ls -lh _install/lib 
 7 total 4.5M
 8 -rw-r--r-- 1 root root  93K  5月  6 15:04 libform.a
 9 -rw-r--r-- 1 root root 529K  5月  6 15:04 libform_g.a
10 lrwxrwxrwx 1 root root   12  5月  6 15:04 libform.so -> libform.so.5
11 lrwxrwxrwx 1 root root   14  5月  6 15:04 libform.so.5 -> libform.so.5.9
12 -rwxr-xr-x 1 root root  68K  5月  6 15:04 libform.so.5.9
13 -rw-r--r-- 1 root root  51K  5月  6 15:04 libmenu.a
14 -rw-r--r-- 1 root root 321K  5月  6 15:04 libmenu_g.a
15 lrwxrwxrwx 1 root root   12  5月  6 15:04 libmenu.so -> libmenu.so.5
16 lrwxrwxrwx 1 root root   14  5月  6 15:04 libmenu.so.5 -> libmenu.so.5.9
17 -rwxr-xr-x 1 root root  36K  5月  6 15:04 libmenu.so.5.9
18 -rw-r--r-- 1 root root 446K  5月  6 15:04 libncurses.a
19 -rw-r--r-- 1 root root 129K  5月  6 15:04 libncurses++.a
20 -rw-r--r-- 1 root root 2.3M  5月  6 15:04 libncurses_g.a
21 lrwxrwxrwx 1 root root   15  5月  6 15:04 libncurses.so -> libncurses.so.5
22 lrwxrwxrwx 1 root root   17  5月  6 15:04 libncurses.so.5 -> libncurses.so.5.9
23 -rwxr-xr-x 1 root root 327K  5月  6 15:04 libncurses.so.5.9
24 -rw-r--r-- 1 root root  23K  5月  6 15:04 libpanel.a
25 -rw-r--r-- 1 root root 131K  5月  6 15:04 libpanel_g.a
26 lrwxrwxrwx 1 root root   13  5月  6 15:04 libpanel.so -> libpanel.so.5
27 lrwxrwxrwx 1 root root   15  5月  6 15:04 libpanel.so.5 -> libpanel.so.5.9
28 -rwxr-xr-x 1 root root  15K  5月  6 15:04 libpanel.so.5.9
29 lrwxrwxrwx 1 root root   17  5月  6 15:04 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查阅。

选择某一进程,按s:用strace追踪进程的系统调用

P、T、M和top下是一样的,按CPU,Time+、Memory使用排序。

下面有F1~F10的功能和对应的字母快捷键。














































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

时间: 2024-08-29 12:29:04

交叉编译和使用HTOP的相关文章

linux 安装交叉编译工具

以arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2为例 1.获取要安装的交叉编译工具.(一般芯片厂商提供,也可自行下载) 2.使用tar命令:tar jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 解压缩安装到当前目录下(tar 后面参数可根据具体压缩格式进行变换) 3.使用find .pwd获取安装路径 进入到上一步解压目录使用find查找bin目录 find . -name bin.如果bin目录下有下面交叉编译工具,表

使用ndk交叉编译android各平台版本的第三方库

只要弄明白了ndk-bundle的目录结构,交叉编译的基本原理就可以自行编写脚本去编译了.从仓库拿下代码包后,一般在linux平台下编译当前平台使用的库,只要使用其自动配置脚本configure进行平台相关的配置,配置成功后就可以执行make进行编译以及安装.configure通常会在/usr/inclue和/usr/lib下检查平台支持的接口,编译时需要使用binutils和gcc两个工具集合.所以要使用ndk进行交叉编译,最基本就是要对上面4要素进行配置,就可以配置出最基本的交叉平台环境,顺

进程查看及命令使用-htop/dstat/top/ps命令

进程是linux用来表示正在运行的程序的一种抽象概念,程序内存的使用,处理器时间和I/O资源就是通过这个对象进行管理和监视的. 一个程序要先运行在用户空间,当他需要去使用硬件资源的时候,就不得不去调动内核才能取得使用权,这时候调动内核,进入内核空间,当内核处理完毕需求之后,将指令返回给用户,一个调用完成. 进程会以时间片段在CPU运行的,CPU以一根时间线被划分成无数个片段:当一个进程运行到某个阶段,需要暂时终止的时候,需要保存一个进程运行的现场,叫保存现场:执行到某片段的时候,需要中断,当再需

安装htop及rpm工具使用

在CentOS6.5上用yum安装htop,费了好大的劲都安装不上. 先是yum install htop,提示如下 Setting up Install Process No package top available. Error: Nothing to do 然后指定yum源,把163上的yum源统统写入repo文件中,还是上面的提示,暂时没办法了. 上网查吧,刚好看到一篇文章有编译安装的过程,如下 下载htop源代码文件 wget http://sourceforge.net/proje

交叉编译

在一种计算机环境中运行的编译器,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译.这个编译过程就叫交叉编译. 简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler). 这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)和 操作系统(Operating System). 同一个体系结构可以运行不同的操作系统:同样,同一个操作系统也可以在不同的体系结构上运行. 常见的交叉编译例子如下: 1.在

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

闲扯: 实习了将近半年一直在做硬件以及底层的驱动,最近要找工作了发现了对linux普遍要求很高,而且工作岗位也非常多,所以最近一些时间在时不时地接触linux. 正文:(我一时兴起开始写博客,准备不充分,图片都没有保存) 首先就是上网查找一下现成的教程,下面的网址就是一个很好的教程 http://www.cnblogs.com/softhal/p/5699381.html 第一.二.三步我都是照做的 但是在第四步的时候对于我这种新手来说就出现了一些问题: 1.第一种方法,修改bashrc文件,总

window7下 cocos2dx android交叉编译环境部署小结

上周被android交叉编译搞惨了,还好最后弄好了,写个小结以后备用吧. 步骤,1.下载cygwin的devel和shells模块 2. 2.设置环境变量 a.设置NDK_ROOT b.设置Path 编辑Path,在后面追加4个环境变量,以;号隔开(别忘了给前面的加上;),4个分别是android的sdk的platform-tools,android的sdk的tools,   cygwin的bin,上面添加的NDK_ROOT C:\Work\adt-bundle-windows-x86_64-2

Linux下获取arm的交叉编译工具链

转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gneabihf-gcc等. 前言 这里有一个专门的说法: “arm-linux-gnueabihf-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括裸机程序.u-boot.Linux kernel.filesystem和App应用程序.使

更换Qt QtEmbedded库的版本出现问题及解决(交叉编译OpenSSL)

近日将QtEmbedded库的版本由4.7.0更新到4.7.4.工具链并未改变,仍为 Target: arm-none-linux-gnueabiConfigured with: ......Thread model: posixgcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) 所有依赖的库根据需要重新下载最新版本编译.现将在此过程中出现的问题及解决方法列出,以供下次移植时参考. 1.browser程序重新编译,在开发板的命令行运行:./browse