procps-ng交叉编译
procps-ng依赖ncurses,ncurses下载:
https://invisible-mirror.net/archives/ncurses/
ncurses交叉编译
先创建一个目录,用来保存生成的成果物,--prefix
指向这个目录的绝对路径:
mkdir -p tmp
tar -xvf ncurses-6.0.tar.gz
cd ncurses-6.0/
./configure --host=aarch64-himix100-linux CPPFLAGS="-P" --prefix=/xxx/tmp
make -j
make install
procps-ng交叉编译
tar -xvf procps-ng-3.3.11.tar.xz
cd procps-ng-3.3.11/
echo "ac_cv_func_realloc_0_nonnull=yes" > arm-linux.cache
echo "ac_cv_func_malloc_0_nonnull=yes" >> arm-linux.cache
./configure --host=aarch64-himix100-linux \
NCURSES_CFLAGS="-I/xxx/tmp/include -I/xxx/tmp/include/ncurses" \
NCURSES_LIBS="-L/xxx/tmp/lib -lncurses" \
--prefix=/xxx/tmp/ --with-ncurses \
--cache-file=arm-linux.cache
此时直接编译make -j V=1
还是说找不到curses.h
和ncurses.h
头文件,这里就直接修改Makefile
(因为从V=1
编译过程中可以看到编译出错时并没有把ncurses
生成的头文件路径包含进去的),让Makefile
包含对应的路径的头文件:
如下修改:
这样就可以编译通过了。
make -j V=1
make install
设备上使用
将上面tmp
文件夹改名为procps
后拷贝到设备上,需要设置相关的环境后才可以使用(使用env
命令查看相关环境变量)。
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/procps/lib
ln -s /tmp/procps/share/terminfo/ /usr/share/
export TERMINFO=/usr/share/terminfo
这样就可以正常使用了:(如果需要改终端的类型,设置环境变量TERM就可以了)