android 交叉编译so,Android交叉编译htop和使用方法
htop來(lái)源于top,top是Unix/linux下功能強(qiáng)大的性能檢測(cè)工具之一,用于實(shí)時(shí)檢測(cè)并統(tǒng)計(jì)進(jìn)程的屬性和狀態(tài),基于ncurses庫(kù),可上顯示文字界面。但是top已經(jīng)非常陳舊,不支持鼠標(biāo)點(diǎn)擊操作,不支持查看進(jìn)程的各個(gè)子線程的信息(對(duì)于我來(lái)說(shuō),這個(gè)非常重要,有助于分析代碼的效率并優(yōu)化),不支持color顯示,易用性較差(曾有人提出改進(jìn)top但未被接受)。htop官網(wǎng)對(duì)htop和top的比較:
2、htop源碼下載
網(wǎng)站首頁(yè):
源碼下載:git clone
GitHub地址:
目前最新版本是2.0.1,次之2.0.0,再次之1.0.3
3、使用ndk進(jìn)行交叉編譯
3.1下載ndk,不同的Android版本有不同的ndk,4.4使用的是android-ndk-r9b-linux-x86_64.tar.bz2();android
5.0的NDK下載地址()
3.2解壓android-ndk-r9b-linux-x86_64.tar.bz2,并安裝交叉編譯工具,安裝之后,就按照正常的linux交叉編譯流程操作就可以了
$./make-standalone-toolchain.sh
--arch=arm --ndk-dir=/home/klaus/tools/android-ndk-r9b --system=linux-x86_64
--install-dir=/home/klaus/tools/android-ndk-r9b --platform=android-19
這樣就將交叉編譯工具安裝到/home/klaus/tools/android-ndk-r9b
3.3交叉編譯ncurses
htop編譯時(shí),必須有ncurses庫(kù)的支持,所以編譯htop之前,必須先編譯ncurses。
下載ncurses:
$./configure
CC=arm-linux-androideabi-gcc-4.6 --prefix=$PWD/system
--host=arm-linux-androideabi --with-shared
CPPFLAGS=-I/home/klaus/tools/android-ndk-r9b/sysroot/usr/include
$
make && make install
note:
a、出現(xiàn)下圖錯(cuò)誤
修改
b、出現(xiàn)下圖錯(cuò)誤
執(zhí)行:
$make
clean
$./configure
CC=arm-linux-androideabi-gcc-4.6 --prefix=$PWD/system
--host=arm-linux-androideabi --with-shared
CPPFLAGS=-I/home/klaus/tools/android-ndk-r9b/sysroot/usr/include
如果還有這個(gè)錯(cuò)誤,重啟一下機(jī)器
3.4、交叉編譯htop2.0.1版本
klaus@server:~/tools/htop-2.0.1$
./autogen.sh
klaus@server:~/tools/htop-2.0.1$?./configure
--prefix=/home/klaus/tools/htop-2.0.1/system --host=arm
--bindir=/home/klaus/tools/htop-2.0.1/system/xbin
--with-sysroot=/home/klaus/tools/android-ndk-r9b/sysroot
CC=arm-linux-androideabi-gcc-4.6 CFLAGS="-I/home/klaus/tools/ncurses-6.0/system/include
-I/home/klaus/tools/ncurses-6.0/system/include/ncurses
-I/home/klaus/tools/android-ndk-r9b/sources/android/support/include"
LDFLAGS=-L/home/klaus/tools/ncurses-6.0/system/lib --disable-unicode
出現(xiàn)以下錯(cuò)誤:
是由于configure文件在檢查libncurses庫(kù)時(shí)出現(xiàn)了問(wèn)題,分析configure.ac文件發(fā)現(xiàn)如下:
在disable-unicode時(shí),檢查libncurses6.so庫(kù)。此時(shí)我們查看以下我們交叉編譯之后的ncurses的install目錄是否有l(wèi)ibncurses6.so文件
很顯然是沒(méi)有的,所以我們需要建立一個(gè)軟連接;
然后進(jìn)入htop2.0.1,再次執(zhí)行configure配置命令,然后編譯、安裝
如果編譯時(shí)出現(xiàn)以下錯(cuò)誤:
此時(shí)按照下圖執(zhí)行:
注釋掉HAVE_LINUX_AFFINITY即可編譯通過(guò)
至此,htop編譯成功,
3.4.1、將編譯好的文件拷貝到Android設(shè)備上去運(yùn)行
使用adb通過(guò)usb進(jìn)入Android設(shè)備的shell
將編譯好的ncurses和htop拷貝到system目錄下,由于Android的system目錄是只讀的,需要remount
我是在windows下開(kāi)發(fā)的,從linux主機(jī)上拷貝到Android設(shè)備,需要借助window,而window對(duì)目錄是不區(qū)分大小寫(xiě)的,所以需要對(duì)linux上的內(nèi)容進(jìn)行壓縮,然后在Android上解壓。
拷貝文件到Android
由于data目錄下有system目錄,為了不影響system,另外建立了一個(gè)目錄cmd_htop,用于解壓
拷貝htop應(yīng)用程序及相關(guān)文件到/system
此時(shí)可以執(zhí)行htop命令,但是會(huì)有錯(cuò)誤:
需要執(zhí)行環(huán)境變量如下:
執(zhí)行htop命令,如下
以上紅色部分就是htop的執(zhí)行效果,至此htop2.0.1移植到Android成功。
3.5、交叉編譯htop1.0.3版本
編譯和2.0.1的版本差不多,
klaus@server:~/tools/htop-1.0.3$
./configure --prefix=/home/klaus/tools/htop-1.0.3/system --host=arm
--bindir=/home/klaus/tools/htop-1.0.3/system/xbin
--with-sysroot=/home/klaus/tools/android-ndk-r9b/sysroot
CC=arm-linux-androideabi-gcc-4.6 CFLAGS="-I/home/klaus/tools/ncurses-6.0/system/include
-I/home/klaus/tools/ncurses-6.0/system/include/ncurses"
LDFLAGS=-L/home/klaus/tools/ncurses-6.0/system/lib --disable-unicode
如果編譯出現(xiàn)以下錯(cuò)誤:
按照下面的執(zhí)行:
增加#include
make編譯出現(xiàn)以下錯(cuò)誤時(shí):
執(zhí)行以下操作:
注釋掉HAVE_NATIVE_AFFINITY,增加
#define
SYS_ioprio_get __NR_ioprio_get
#define
SYS_ioprio_set __NR_ioprio_set
然后再編譯
然后將壓縮安裝目錄system為system1.0.3.tar.gz
將system1.0.3.tar.gz拷貝到Android下
4、使用方法
詳細(xì)應(yīng)用請(qǐng)man htop查閱。
選擇某一進(jìn)程,按s:用strace追蹤進(jìn)程的系統(tǒng)調(diào)用
P、T、M和top下是一樣的,按CPU,Time+、Memory使用排序。
下面有F1~F10的功能和對(duì)應(yīng)的字母快捷鍵。
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
總結(jié)
以上是生活随笔為你收集整理的android 交叉编译so,Android交叉编译htop和使用方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 团队开发git使用各种问题
- 下一篇: Android 长按照片保存 工具类