3
8
2014
3

编译 Android 版 lsof

本文来自依云'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 可由此下载

Category: Android | Tags: Android 交叉编译 | Read Count: 12152
Avatar_small
哆啦比猫 说:
Mar 20, 2014 10:12:29 PM

之前用 aur 里的 arm-linux-gnueabi-gcc 编译了一个 hello world,放手机上出现 "kernel too old" 错误…… 我要试试这个 crosstool-ng,希望不会坑我

Avatar_small
依云 说:
Mar 20, 2014 11:29:23 PM

233

crosstool-ng 配置里有一项是支持的内核的最低版本,你把自己的内核版本写上 :-)

gosw 说:
Jun 29, 2014 02:56:05 PM

请问一下,我是手机是Android 4.2.2 系统的,下载你的编译好的二进制包lsof, htop 之类的可以用吗?
如何将这些编译好的二进制文件放到Android 平台, 放在哪个目录,能写一个升级步骤给我吗? 谢谢

因类我试着将它下载下来,放到/system/bin/目录,运行不了呀


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

| Theme: Aeros 2.0 by TheBuckmaker.com