android 编译

1 篇文章 0 订阅

android 7.0以后,可以快速编译:

prebuilts/build-tools/linux-x86/bin/ninja -f out/build-ud710_haps_native.ninja bootimage

确认 config:

手机终端,zcat /proc/config.gz,  查看手机中的config定义。

源码中,编译目录,out/target/product/s9863a3h10/obj/KERNE/.config

kconfig、defconfig、.config

1.deconfig 文件:

一般由平台厂商提供,内核编译用做.config的参考,注意:如果,缺少该文件,无法进行编译。

文件位于:\kernel\..\arch\arm\configs\xxx_defconfig

2.kconfig 

分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。

3.makefile

分布在各个目录下,用于集成编译。

4.config 文件

在内核编译时,主Makefile调用这个.config,用于或者用于的内核编译配置。当我们在内核源码目录下输入make menuconfig时,在出现的菜单界面中选择一项时,它会自动更新.config相应项的值。如果我们没有选择,则会在.config问下插入一行注释(# CONFIG_TOUCHSCREEN_GT9xx is not set)

文件位于 :kernel\...\out\xxx_defconfig\.config

修改defconfig :arch/arm64/configs/xxxx64_defconfig

1、make ARCH=arm xxxx32_defconfig

2、make ARCH=arm64 menuconfig

3、make ARCH=arm savedefconfig

4、diff -u arch/arm64/configs/xxxx32_defconfig defconfig

5、最后将上方命令打印出的那部分改动合入到 arch/arm/configs/xxxx32_defconfig 文件中就好了。

编译kernel 文件指定输出目录:

# 设置编译平台为64位arm
export ARCH=arm64
export SUBARCH=arm64
# 配置arm64的交叉编译路径
export PATH=/home/test/work/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin:$PATH
# 配置32位arm的交叉编译路径
# 测试过程中32位的不设置居然编译不过
export PATH=/home/test/work/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin:$PATH
 
# 设置64位交叉编译工具前缀
# 这个前缀其实就是交叉编译链路径/home/test/work/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin 下面的工具的公共前缀
export CROSS_COMPILE=aarch64-linux-android-
 
# 设置32位交叉编译工具前缀
# 这个前缀其实就是交叉编译链路径/home/test/work/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin 下面的工具的公共前缀
export CROSS_COMPILE_ARM32=arm-linux-androideabi-
 
# 通过make命令生成编译配置文件.config
# O=out指定输出目录  test_defconfig:这个是oneplus3的内核编译配置
make  O=out test_defconfig
 
#  执行内核编译
make -j2 O=out ARCH=arm64

编译生成文件的输出格式,两种工具。

gcc中使用 objcopy。objcopy --help查看帮助。参考 objcopy的详细说明_Ye__sea的博客-CSDN博客_objcopy工具

armcc中使用 fromelf。参考 Keil/MDK中如何生成***.bin格式文…_yf夜风的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值