欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

android 交叉编译so,Android交叉编译htop和使用方法

发布时间:2023/12/10 Android 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 android 交叉编译so,Android交叉编译htop和使用方法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

htop来源于top,top是Unix/linux下功能强大的性能检测工具之一,用于实时检测并统计进程的属性和状态,基于ncurses库,可上显示文字界面。但是top已经非常陈旧,不支持鼠标点击操作,不支持查看进程的各个子线程的信息(对于我来说,这个非常重要,有助于分析代码的效率并优化),不支持color显示,易用性较差(曾有人提出改进top但未被接受)。htop官网对htop和top的比较:

2、htop源码下载

网站首页:

源码下载:git clone

GitHub地址:

目前最新版本是2.0.1,次之2.0.0,再次之1.0.3

3、使用ndk进行交叉编译

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编译时,必须有ncurses库的支持,所以编译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、出现下图错误

修改

b、出现下图错误

执行:

$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

如果还有这个错误,重启一下机器

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

出现以下错误:

是由于configure文件在检查libncurses库时出现了问题,分析configure.ac文件发现如下:

在disable-unicode时,检查libncurses6.so库。此时我们查看以下我们交叉编译之后的ncurses的install目录是否有libncurses6.so文件

很显然是没有的,所以我们需要建立一个软连接;

然后进入htop2.0.1,再次执行configure配置命令,然后编译、安装

如果编译时出现以下错误:

此时按照下图执行:

注释掉HAVE_LINUX_AFFINITY即可编译通过

至此,htop编译成功,

3.4.1、将编译好的文件拷贝到Android设备上去运行

使用adb通过usb进入Android设备的shell

将编译好的ncurses和htop拷贝到system目录下,由于Android的system目录是只读的,需要remount

我是在windows下开发的,从linux主机上拷贝到Android设备,需要借助window,而window对目录是不区分大小写的,所以需要对linux上的内容进行压缩,然后在Android上解压。

拷贝文件到Android

由于data目录下有system目录,为了不影响system,另外建立了一个目录cmd_htop,用于解压

拷贝htop应用程序及相关文件到/system

此时可以执行htop命令,但是会有错误:

需要执行环境变量如下:

执行htop命令,如下

以上红色部分就是htop的执行效果,至此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

如果编译出现以下错误:

按照下面的执行:

增加#include

make编译出现以下错误时:

执行以下操作:

注释掉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、使用方法

详细应用请man htop查阅。

选择某一进程,按s:用strace追踪进程的系统调用

P、T、M和top下是一样的,按CPU,Time+、Memory使用排序。

下面有F1~F10的功能和对应的字母快捷键。

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

总结

以上是生活随笔为你收集整理的android 交叉编译so,Android交叉编译htop和使用方法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。