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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java笔记(08):面向对象--抽象类

1、抽象类概述: 1 /*2 抽象类的概述:3 动物不应该定义为具体的东西,而且动物中的吃,睡等也不应该是具体的。4 我们把一个不是具体的功能称为抽象的功能,而一个类中如果有抽象的功能,该…

mac删除android sd卡,如何从mac完全删除android及其所有文件?

前一段时间我试图让科尔多瓦工作,但android模拟器永远不会启动。它只是挂着一个黑色的屏幕。如何从mac完全删除android及其所有文件?我原来是用brew install android-sdk安装的。然后我读了一个糟糕的地方。所以我已经删除它并安装了Android Studio。无论…

201521123023《Java程序设计》第13周学习总结

1. 本周学习总结 (1)网络中为了进行数据交换(通信)而建立的规则、标准或约定(语义语法规则)称之为协议(常用http/ftp) (2)大致熟悉了TCP协议,但是UDP怎么辣么蓝&#xff…

Android中怎获取json,Android应用中如何解析获取的json数据

Android应用中如何解析获取的json数据发布时间:2020-11-24 17:10:08来源:亿速云阅读:107作者:Leah这篇文章将为大家详细讲解有关Android应用中如何解析获取的json数据,文章内容质量较高,因此小编分享给大家…

Hibernate4之session核心方法

在学习session的核心方法之前,我们先了解下hibernate中几种对象的状态: 暂时状态:这样的状态就好像咱们公司请的暂时员工一样,他在公司里没有相关的资料和id。 特点:在使用代理主键的情况下, OID 通常为 null 不…

Android 同步锁死锁,Android多线程研究(3)——线程同步和互斥及死锁

为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码:package com.maso.test;public class ThreadTest2 implements Runnable{private TestObj testObj new TestObj();public static void main(String[] args)…

QML与C++交互:登陆界面设计

QML与C交互:登陆界面设计 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2.1 说明: QML设计前台界面,C后台负责逻辑 效果图: 源码: 前台qml文件 login.qml /******************************************************…

html怎么在字体中加波浪线,CSS3实现文字波浪线效果

前言css的设计之巧妙,实现之精妙,细细寻味,其妙非凡,妙不可言。这波浪线,取巧的运用了linear-gradient属性,合角度、颜色、位置于一体,配合background-size,background-repeat&#…

NET Core 指令启动

ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core 的成熟,以及 ASP.NET 5的命名会使得外界将它视为 ASP.NET 的升级版,但它其实是新一代从头开始打造的 ASP.N…

html文本显示状态代码中,HTML文本显示状态代码中,表示?

文本如何大小判别偏心受压剪力墙的。能源能量然资提供的自是指源,显示如(,显示能、能、能、能、、热等的械能是机生物原子光能化学总称,不可能源然界的一可再生能于自源可源和再生分为存在次能。状态中表并发儿麻体温生的婴幼易发间低醉期症(…

1807. [NOIP2014]寻找道路P2296 寻找道路

题目描述 在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件: 1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。 2 .在满足…

html页面 wordpress,WordPress纯代码实现前端页面HTML完美压缩

前言:压缩HTML页面的好处就是略微提升页面加载速度,并给那些爱扒皮的缺德玩意制造些许麻烦。好了将如下代码添加在functions.php中即可://压缩WordPress前端html代码function wp_compress_html(){function wp_compress_html_main ($buffer){$…

js中的作用域

关于变量和参数问题: 函数外面定义的变量是全局变量,函数内可以直接使用。 在函数内部没有使用var定义的变量则为全局变量,在函数内使用var关键字定义的变量是局部变量,即出了函数外边无法获取。 js函数定义的参数没有默认值&…

html HTML1300 进行了导航,jquery根据文章H标签自动生成导航目录

jquery根据文章H标签自动生成导航目录2017-11-19 20:57在一些旅游网站,比如说途牛、携程这些,当你看某条线路的详情页时,右边会有相应的第一天、第二天等的目录。这么大的网站,不可能后台添加行程的时候,每一天都要自动…

asp.net core利用DI实现自定义用户系统,脱离ControllerBase.User

前言 很多时候其实我们并不需要asp.net core自带的那么复杂的用户系统,基于角色,各种概念,还得用EF Core,而且在web应用中都是把信息存储到cookie中进行通讯(我不喜欢放cookie中,因为有次我在mac系统中的sa…

html的排版标题的是,HTML 5结构排版布局

进行总体布局时候,具体可以用的方法。1.大纲:文档中各内容区块的结构编排。内容区块可以使用标题元素来展示各级内容区块的标题。关于内容区块的编排可以分为“显示编排”和“隐式编排”。显示编排:明确使用section等元素创建文档结构&#x…

[LeetCode]Distinct Subsequences,解题报告

题目 Given a string S and a string T, count the number of distinct subsequences of T in S.A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative po…

2021年河南高考成绩排名查询一分一段表,2018河南高考一分一段统计表,查排名必备!...

原标题:2018河南高考一分一段统计表,查排名必备!:点击这里信息省招办公布了2018年普通高招分数段统计表,对每个分数段有多少考生进行了详细统计。你考了多少分?处在哪个位置?快来看看&#xff0…

实用的css样式

当字数超过一行时,可以用...代替 white-space: nowrap; overflow: hidden; text-overflow: ellipsis; 这三个样式同时使用才有效,也可以去掉white-space样式,分两行 转载于:https://www.cnblogs.com/maggie-php/p/6906462.html

js滚轮换切屏

js滚轮换切屏 因为全项目不是自己写的,仅仅是帮别人写js滚轮代码,并且别人项目也还未上线。所以仅仅贴出自己写的那段部分代码, 效果:鼠标滚轮滚动时。网頁屏幕一屏一屏的上下切换 (下面代码在本地电脑的IE,chrome与FireFox这三个…