本文介绍: 如果遇到一些奇怪的问题可以换一换NDK版本时候,有时候就解决了,或者更多的使用自己经常使用的版本,比如我用的多是androidndk-r10e环境来适应gcc编译环境问题少很多。或者官网 NDK编译工具下载https://developer.android.google.cn/ndk/downloads?官网版本https://github.com/android/ndk/wiki/Unsupported-Downloads选择哪个版本取决于使用的编译脚本。自行下载pidstat

android交叉编译pidstat iostat mpstat

编译环境

编译工具下载

参考这个:https://blog.csdn.net/gaoliang0/article/details/81913291

或者官网 NDK编译工具下载: https://developer.android.google.cn/ndk/downloads?hl=zh-cn

官网老版本: https://github.com/android/ndk/wiki/Unsupported-Downloads

或者从我的百度网盘:

链接:https://pan.baidu.com/s/1FEtM6mVNgER_DvC2myHB5Q?pwd=28l9
提取码:28l9
–来自百度网盘超级会员V6的分享

准备下载 android-ndk-r19c-linux-x86_64.zip 因为这个版本比较适中

编译过程

编译环境

系统环境

系统环境:

iyfangfeng@iyfangfeng:~/libsrc/ffmpeg/basic/clangffmpeg0511$ uname -a
Linux iyfangfeng 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

NDK版本

aarch64-linux-android-4.9

以下只编译armeabiv7a版本如果需要编译其他版本 可以参考 build_fdkaac_all.sh 方式

NDK版本的选择

当前Google给的NDK工具支持GCC最高版本android-ndk-r17c-linux-x86_64.zip之后的版本不再支持gcc,只支持clang来编译,而使用gcc或者clang编译在编译脚本上存在差别,所以需要注意着点。

选择哪个版本取决于使用的编译脚本。

下面的ffmpeg因为涉及到很多第三方库所以会存在同时使用r17c以上的版本或者r17c下的版本 使用gcc编译。

注意:

如果遇到一些奇怪的问题可以换一换NDK版本时候,有时候就解决了,或者更多的使用自己经常使用的版本,比如我用的多是androidndk-r10e环境来适应gcc编译环境,问题少很多。

源码下载

自行下载pidstat

只编译简单pidstat mpstat iostat

编译
reach@reach-G250-005-L5-XX:pidstat-master$ ls
common.c  count.c        ioconf.c  iostat    iostat.o            Makefile  mpstat.h  pidstat.c  rd_stats.c        README.md    version.h
common.h  count.h        ioconf.h  iostat.c  librdstats_light.a  mpstat    mpstat.o  pidstat.h  rd_stats.h        sysconfig.h
common.o  count_light.o  ioconf.o  iostat.h  libsyscom.a         mpstat.c  pidstat   pidstat.o  rd_stats_light.o  tools
reach@reach-G250-005-L5-XX:pidstat-master$ pwd
/opt/lvopt/reach_sda/iyf/source/pidstat-master

make

编译脚本
#Makefile to build pidstat commands for android (arch-arm64)
SRC_DIR = $(shell pwd)
COMPILE = ${SRC_DIR}/tools/aarch64-linux-android-4.9/bin
CC = ${COMPILE}/aarch64-linux-android-gcc
AR = ${COMPILE}/aarch64-linux-android-ar
NDK_SYSROOT=${SRC_DIR}/tools/ndk
CFLAGS = -g -O2 -Wall -Wstrict-prototypes -pipe -O2 
CFLAGS += --sysroot=${NDK_SYSROOT}
CFLAGS += -pie -fPIE
ALL: pidstat mpstat iostat
commom.o: common.c version.h common.h ioconf.h sysconfig.h
	$(CC) -o $@ -c $(CFLAGS) $<
ioconf.o: ioconf.c ioconf.h common.h sysconfig.h
	$(CC) -o $@ -c $(CFLAGS) $<
rd_stats_light.o: rd_stats.c common.h rd_stats.h ioconf.h sysconfig.h
	$(CC) -o $@ -c $(CFLAGS) $<
count_light.o: count.c common.h rd_stats.h
	$(CC) -o $@ -c $(CFLAGS) $<
libsyscom.a: common.o ioconf.o
	$(AR) rvs $@ $?
librdstats_light.a: rd_stats_light.o count_light.o
	$(AR) rvs $@ $? 
pidstat.o: pidstat.c pidstat.h version.h common.h rd_stats.h count.h
	$(CC) -o $@ -c $(CFLAGS) $<
mpstat.o: mpstat.c mpstat.h version.h common.h rd_stats.h count.h
	$(CC) -o $@ -c $(CFLAGS) $<
iostat.o: iostat.c iostat.h version.h common.h ioconf.h sysconfig.h rd_stats.h count.h
	$(CC) -o $@ -c $(CFLAGS) $<
pidstat: pidstat.o librdstats_light.a libsyscom.a
	$(CC) pidstat.o libsyscom.a librdstats_light.a -o $@ $(CFLAGS)
mpstat: mpstat.o librdstats_light.a libsyscom.a
	$(CC) mpstat.o libsyscom.a librdstats_light.a -o $@ $(CFLAGS)
iostat: iostat.o librdstats_light.a libsyscom.a
	$(CC) iostat.o libsyscom.a librdstats_light.a -o $@ $(CFLAGS)
.PHONY: clean
clean:
	rm -f *.o *.a pidstat mpstat iostat

备份

G:toolsandroidpidstat-okpidstat

问题

使用

可以在Android Studio 上面演示,暂时没有完全独立的demo,用得人多再补吧,先编译

技术支持

按照如上提供的步骤,如果还存在问题,可以找我获取可以使用的so库、源码、脚本、带环境及源码的虚拟机应该有地方可以获取名片, promptpe 我喜欢这名字,以后全网都使用这个名字,全网都可以搜索到我 。

原文地址:https://blog.csdn.net/abcdabcdqqq/article/details/134668216

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如若转载,请注明出处:http://www.7code.cn/show_4917.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注