板子原本系统软件,top命令来自busybox 内部自带的procps,不支持显示进程优先级
开源的procps-ng源码交叉编译可以得到功能较丰富的top命令,(以top命令举例,还有ps pmap vmstat watch等命令)
procps 依赖ncurses 库,交叉编译ncurses-6.0 source code
./configure --prefix=/home/faun/backup/ncurses-6.0 --host=arm-linux-gnueabihf --with-shared
make
/backup/ncurses-6.0/lib$ ls
libncurses.so.6.0 libpanel.so.6
交叉编译procps
NCURSES_CFLAGS="-I/backup/ncurses-6.0/include" NCURSES_LIBS="-L/backup/ncurses-6.0/lib -lncurses -ltinfo"./configure --host=arm-linux-gnueabihf --prefix=/backup/procps-ng-3.3.16/bin --exec-prefix=/backup/procps-ng-3.3.16/bin --libdir=/backup/procps-ng-3.3.16/bin --enable-static --disable-kill --with-ncurses
vim config.h
//mark rpl_malloc
make
/backup/procps-ng-3.3.16/bin$ ls
free pgrep pidof pkill pmap ps pwdx slabtop tload top uptime vmstat w watch
/backup/procps-ng-3.3.16/usr/lib$ ls
libprocps.a libprocps.la libprocps.so libprocps.so.8 libprocps.so.8.0.2 pkgconfig
将libncurses.so.6 libprocps.so.8.0.2 和top 命令copy到板子里面,执行./top提示terminal 设定有问题,重设terminal环境变量为vt100(从ubuntu 电脑cop,这个不是elf,可以与arm板子共用),创建terminal database如下目录结构
/mnt # ./top
terminals database is inaccessible
/mnt # ls /usr/share/terminfo/v/vt100
/usr/share/terminfo/v/vt100
/mnt # export TERM=vt100
再次执行top显示成功