本文来自依云's Blog,转载请注明。
Android 自带的那个 lsof 实际上是 toolbox 里的,功能十分单一,除了显示出所有进程的所有打开的文件外就什么都不能做,连说明也没有 :-( 于是为了 htop 用着爽一点,还是自己编译一个吧。
首先弄个 GNU 工具链。Android NDK 的没有 tcp.h
头文件,会报 TCP_LISTEN
等标识符未定义。
- 我使用 crosstool-NG 1.19.0 编译的 gcc 4.8.1。适用于 Arch Linux x86_64。第一次编译工具链,没想到在 crosstool-NG 的帮助下一次就编译好了,所以是未作静态链接的版本,其它版本的 Linux 可能无法运行。
- zshaolin 使用的工具链 gcc 4.4.6。它是使用 crosstool-NG 1.13.2 编译的。
编译过程。使用了静态链接,最终文件大小 741K。
path+=/ldata/txtfiles/soft/arm-lilydjwg-linux-gnueabi/bin LSOF_CC=arm-lilydjwg-linux-gnueabi-gcc LSOF_CFGF='-DHAS_STRFTIME -DHASNORPC_H -DGLIBCV' LSOF_VERS=3.0.8 ./Configure -n linux make arm-lilydjwg-linux-gnueabi-gcc -o lsof -static dfile.o dmnt.o dnode.o dproc.o dsock.o dstore.o arg.o main.o misc.o node.o print.o proc.o store.o usage.o util.o -L./lib -llsof arm-lilydjwg-linux-gnueabi-strip lsof
编译好的 lsof 可由此下载。
Mar 20, 2014 10:12:29 PM
之前用 aur 里的 arm-linux-gnueabi-gcc 编译了一个 hello world,放手机上出现 "kernel too old" 错误…… 我要试试这个 crosstool-ng,希望不会坑我
Mar 20, 2014 11:29:23 PM
233
crosstool-ng 配置里有一项是支持的内核的最低版本,你把自己的内核版本写上 :-)
Jun 29, 2014 02:56:05 PM
请问一下,我是手机是Android 4.2.2 系统的,下载你的编译好的二进制包lsof, htop 之类的可以用吗?
如何将这些编译好的二进制文件放到Android 平台, 放在哪个目录,能写一个升级步骤给我吗? 谢谢
因类我试着将它下载下来,放到/system/bin/目录,运行不了呀