当前位置:网站首页 > 科技 > 正文

Android14 (android15)

作者:admin 发布时间:2023-02-08 02:20:22 分类:科技 浏览:211 评论:0


导读:Android14经常搞嵌入式开发的朋友对于交叉编译环境应该并不陌生,说白了,就是一组运行在x86PC机的编译工具,可以让你在PC机上编译出目标平台(例如ARM)可识别的二进制...

Android14

经常搞嵌入式开发的朋友对于交叉编译环境应该并不陌生,说白了,就是一组运行在x86 PC机的编译工具,可以让你在PC机上编译出目标平台(例如ARM)可识别的二进制文件。Android平台也提供了这样的交叉编译工具链,就放在Android的NDK开发包的toolchains目录下,因此,我们的Makefile文件中,只需给出相应的编译工具即可。

废话就先说到这,直接上例子,我们目标是把下面这个math.c文件编译成一个静态库文件:

#include stdio.h

int add( int a , int b ) {

return a+b;

}

你需要编写一个Makefile文件,这里假设你的Android ndk被安装在 /opt/android/ndk 目录下,当然,你可以根据自己的实际情况修改Makefile中相关路径的定义,Makefile文件示例如下:

# Makefile Written by ticktick

# Show how to cross-compile c/c++ code for android platform

.PHONY: clean

NDKROOT=/opt/android/ndk

PLATFORM=$(NDKROOT)/platforms/android-14/arch-arm

CROSS_COMPILE=$(NDKROOT)/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-

CC=$(CROSS_COMPILE)gcc

AR=$(CROSS_COMPILE)ar

LD=$(CROSS_COMPILE)ld

CFLAGS = -I$(PWD) -I$(PLATFORM)/usr/include -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp

LDFLAGS =

TARGET = libmath.a

SRCS = $(wildcard *.c)

OBJS = $(SRCS:.c=.o)

all: $(OBJS)

$(AR) -rc $(TARGET) $(OBJS)

clean:

rm -f *.o *.a *.so

这里不讲Makefile文件的基本原理,只说明一下针对Android环境的Makefile文件编写的注意事项。

(1) CROSS_COMPILE

必须正确给出Android NDK编译工具链的路径,当在目录中执行make命令的时候,编译系统会根据 CROSS_COMPILE 前缀寻找对应的编译命令。

(2) -I$(PLATFORM)/usr/include

由于Android平台没有使用传统的c语言库libc,而是自己编写了一套更加高效更适合嵌入式平台的c语言库,所以系统头文件目录不能再使用默认的路径,必须直到Android平台的头文件目录

(3) -Wall -O2 -fPIC -DANDROID -DHAVE_PTHREAD -mfpu=neon -mfloat-abi=softfp

这些参数的意义网上基本上都有介绍,我就不一一解释了,并不都是必须添加的,但比较常用。

编译方法:

写好makefile文件,并且保存之后,就可以直接在当前目录下执行make命令,编译完成后,当前目录下会生成 libmath.a ,即可直接拿到Android的jni工程中和使用了。

android15

android-15不是手机型号,而是一个 android的系统版本号。

手机型号指用汉语拼音(或拉丁文)字母和一个或几个数字来表示不同产品的代号。

系统版本编号订定是指为系统设置版本号码的方式。通常,版本号码会以数字订定,但亦有不同的方式。


取消回复欢迎 发表评论:

关灯