当前位置:首页 » 编程软件 » 编译安卓内核工具

编译安卓内核工具

发布时间: 2023-01-22 13:06:00

⑴ 在Windows下CodeBlocks能编译Android下的.so和.a吗

可以使用的。解析:首先Android就是linux内核。android应用程序开发环境:包括eclipse、java、androidsdk、adt等。安装android-ndk开发包,这个开发包可以在googleandroid官网下载:通过这个开发包的工具才能将androidjni的C/C++的代码编译成库android的NDK开发需要在linux下进行:因为需要把C/C++编写的代码生成能在arm上运行的.so文件,这就需要用到交叉编译环境,而交叉编译需要在linux系统下才能完成。备注:NDK编译步骤:1.选择ndk自带的例子hello-jni,位于E:\android-ndk-r5\samples\hello-jni(根据具体的安装位置而定)。2.运行cygwin,输入命令cd/cygdrive/e/android-ndk-r5/samples/hello-jni,进入到E:\android-ndk-r5\samples\hello-jni目录。3.输入$NDK/ndk-build,执行成功后,它会自动生成一个libs目录,把编译生成的.so文件放在里面。($NDK是调用我们之前配置好的环境变量,ndk-build是调用ndk的编译程序)4.此时去hello-jni的libs目录下看有没有生成的.so文件,如果有,ndk就运行正常了。

⑵ 如何编译android kernel

1.准备工作: (ubuntu1110 32位)
ubuntu等linuxOS,下载好eclipse,安装好JDK, 安装好android的SDK, 在eclipse中成功打开android 手机模拟器即OK。

2.初始化编译环境 :
关注该网页上的“installing required packages”,其中有的软件包因为版本问题而安装不上,不用管它,之后遇到错误再单独解决。

3.下载内核源码
android 2.3 内核 下载需要等待一段时间。

4.下载交叉编译器:
该步骤有可能耗费大量时间,依据网速不同,几个小时到几天不等,或许可以尝试git clone 后面的地址只下载prebuilt/linux-x86/toolchain

5.设置参数以及编译:
$ export ARCH=arm
$ export SUBARCH=arm
$ export CROSS_COMPILE=arm-eabi-
$ cd goldfish // 进入下载的源代码目录
$ git checkout <commit_from_first_step> //这个步骤我没有做,不知道干嘛用的
$ make goldfish_defconfig
$ make

6.报错信息:
若有报错说找不到 (arm-eabi-gcc command not found)等等,尝试使用http://blog.csdn.net/davidbeckham2901/article/details/7397447 中说到的解决方案即可(即采用另外一个交叉编译器)。

7.测试:

最后,测试一下刚才编译的内核:emulator -avd myavd -kernel ~/goldfish/arch/arm/boot/zImageemulator若系统找不到,可以去android SDK中某文件夹找到,加入系统PATH即可。 -avd后面的参数 myavd即为模拟器的名字,这个我是在eclipse中的模拟器管理中新建的一个模拟器,用那个模拟器的名字即可。 -kernel后面的参数就找到刚才编译出的内核的路径。
若启动模拟器失败,可尝试关闭后再启动。第一次启动模拟器时可能需要等待比较长的时间,3分钟到15分钟不等。

⑶ 如何自己编译android系统并制作刷机包

android系统制作刷机包方法:

【一】:下载安装最新版ROM助手(市场中有很多类似的制作工具,关键要求操作简单,功能强大),安装程序非常简单,只需在一只蘑菇首页内直接下载,并解压到自己的电脑安装即可。

【二】:如果已经下载了与机型匹配的ROM刷机包,那么现在可以直接打开ROM助手了,接下来绘制专属个性的完美刷机包就从这里开始吧。

【三】:打开软件后,它会自动升级到最新版本,另外打开主界面后,会直观简明的显示出它的所有功能,例如:性能优化,系统精简,预装APK,签名打包等等。提醒大家,不要贪心哦,要根据自己的需求点击需要操作的功能,如系统精简,然后进入操作界面,所有功能全部修改一遍也无妨,反正都是一键操作,省时省力。

⑷ 怎么修改Android 的Linux内核

Android 产品中,内核格式是Linux标准的zImage,根文件系统采用ramdisk格式。这两者在Android下是直接合并在一起取名为boot.img,会放在一个独立分区当中。这个分区格式是Android自行制定的格式。

Android开发时,最标准的做法是重新编译于内核和根文件系统,然后调用Android给的命令行文件mkbootimg(out/host/linux-x86/bin/)来打包。

在制作手机ROM时,有时会单独编译内核或抽出根文件进行修改内容,比如我只编译内核,其余的地方不变。这样重新安装巨大的Android开发环境实在不划算。因此很多boot.img解包工具被人开发出来,这一些工具都是把内核和根文件系统从一个现成的boot.img抽取出来,修发后再次打包还原。

一.常见的解包工具

因为boot.img的格式比较简单,它主要分为三大块(有的可能有四块)

因此很多人开发分析工具,有是linux shell脚本,比如repack-zImage,也有人采用perl,还有C语言编写的 unbootimg,

我使用的是在源码位置system/core/mkbootimg/ 下的 mkbootimg。为了简化,蓝点工坊把与mkbootimg中打包工具和解包工具以及所包含的libmincrpty库抽出来,并且重写一个Makefile,作为开源项目。
使用者只需要在linux(需安装gcc,make,一般是标配)或windows(需要安装mingw)的命令行执行make,即可产生可执行文件mkbootimg ,unpackbootimg。

二.解/打包工具使用

解包工具:unpackbootimg

常见格式
unpackbootimg -i .\tmp\boot.img -o .\out

这一句命令行表示把boot.img解包,所有文件输出到out目录下

它会解压出如下文件:
boot.img-zImage (内核文件)
boot.img-ramdisk.gz (根文件系统打包文件)
boot.img-cmdline (mkbootimg cmdline参数)
boot.img-pagesize (mkbootimg pagesize参数)

boot.img-base (mkbootimg base参数)

打包工具:mkbootimg (Android自带)

常见的命令格式:
./mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel zImage --ramdisk boot/boot.img-ramdisk.gz -o boot.img --base 02e00000
这句含义是把内核文件zImage和boot目录下的根文件压缩包 boot.img-ramdisk.gz打包成boot.img.
其中cmdline和base的值均来源于unpackbootimg的结果

⑸ 如何预编译 Android 模拟器专用内核

Android源码编译之后生成的是ramdisk.img、system.img和userdata.img。而内核源码编译完成之后生成的是ZImage。在一般情况下Android源码是不带有内核源码的,但是带有一个镜像,这样在编译完Android源码之后就可以模拟器启动了,如果要更换系统的内核,此时将高版本的内核源码进行编译生成ZImage然后替换Android系统的的镜像。这样使用模拟器启动之后就可以查看内核是否已经被刷新。

⑹ 如何在32位ubuntu11.10 下编译android 4.0.1源码和goldfish内核

一准备工作

1安装javasdk6
(1)从jdk官方网站http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u29-download-513648.html下载jdk-6u29-linux-i586.bin文件。
(2)执行jdk安装文件

[html] view plain
$chmod a+x jdk-6u29-linux-i586.bin
$jdk-6u29-linux-i586.bin

(3)配置jdk环境变量

[html] view plain
$sudo vim /etc/profile
[html] view plain
#JAVAEVIRENMENT
exportJAVA_HOME=/usr/lib/java/jdk1.6.0_29
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存后退出编辑,并重启系统。
2安装依赖包

[html] view plain
$sudo apt-get install git-core gnupg flex bison gperf build-essential\
zipcurlzlib1g-devlibc6-devlib32ncurses5-devia32-libs\
x11proto-core-devlibx11-devlib32readline5-devlib32z-dev\
libgl1-mesa-devg++-multilibmingw32tofrodospython-markdown\
libxml2-utils

3用repo工具下载源码
(1)初始化repo

[html] view plain
$cd ~
$mkdir bin
$curlhttps://dl-ssl.google.com/dl/googlesource/git-repo/repo>~/bin/repo
$chmod a+x ~/bin/repo
$exportPATH=$PATH:~/bin(导出环境变量)

(2)下载android最新源码

[html] view plain
$mkdir android
$cd android
$ repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.0.1_r1
...(输入用户名和邮箱名)
$repo sync -j5
...(此处用5个线程开始下载源码,下载过程及其漫长,需要耐心等待)

二 编译源码
1开始编译

[html] view plain
$source build/envsetup.sh
includingdevice/samsung/maguro/vendorsetup.sh

includingdevice/samsung/tuna/vendorsetup.sh

includingdevice/ti/panda/vendorsetup.sh

includingsdk/bash_completion/adb.bash

$make-j4(此处用4个线程编译)

编译完成后,会看到类似的输出:

[html] view plain
Targetramdisk:out/target/proct/generic/ramdisk.img
Targetuserdatafsimage:out/target/proct/generic/userdata.img
Installedfilelist:out/target/proct/generic/installed-files.txt

2编译遇到的问题
编译错误:

[html] view plain
<命令行>:0:0:错误:“_FORTIFY_SOURCE”重定义[-Werror]

<built-in>:0:0:附注: 这是先前定义的位置

cc1plus:所有的警告都被当作是错误

make:*** [out/host/linux-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o]错误 1

原因:
因机器上的gcc版本过高,需替换成4.4.6重新进行编译。
解决方法:
1)安装4.4版本的gcc和g++

[html] view plain
$ sudo apt-get install gcc-4.4
$ sudo apt-get install g++-4.4

2)设置gcc版本,使gcc链接到gcc-4.4

[html] view plain
$ ls -l /usr/bin/gcc*

lrwxrwxrwx 1 root root 7 2011-11-01 23:56 /usr/bin/gcc -> gcc-4.6

-rwxr-xr-x 1 root root 224544 2011-10-06 05:47 /usr/bin/gcc-4.4

-rwxr-xr-x 1 root root 302104 2011-09-17 05:43 /usr/bin/gcc-4.6

$ cd /usr/bin
$ sudo mv gcc gcc.bak
$ sudo ln -s gcc-4.4 gcc

3)设置g++版本,使g++链接到g++-4.4

[html] view plain
$ sudo mv g++ g++.bak
$ sudo ln -s g++-4.4 g++

4)设置完毕后,重新进行编译即可

3从模拟器启动编译后的镜像文件
1)设置环境变量:

[html] view plain
export PATH=~/android/out/host/linux-x86/bin:$PATH

export ANDROID_PRODUCT_OUT=~/android/out/target/proct/generic

其中linux-x86/bin存放模拟器emulator工具,proct/generic存在编译后的镜像文件。

2)启动模拟器

[html] view plain
$emulator

emulator:WARNING: system partition size adjusted to match image file (162 MB >66 MB)

启动后的截图:

三 编译androidgoldfish内核
1)进入android4.0.1源码目录,下载goldfish内核源码

[html] view plain
$ mkdir kernel
$ cd kernel
$ git clone http://android.googlesource.com/kernel/goldfish.git
$ cd goldfish
$ git branch -a
* (no branch)

master

remotes/origin/HEAD -> origin/master

remotes/origin/android-goldfish-2.6.29

remotes/origin/master

$ git checkout remotes/origin/android-goldfish-2.6.29

2)修改Makefile

[html] view plain
goldfish$ gedit Makefile

修改

[html] view plain
ARCH ?=$(SUBARCH)
CROSS_COMPILE ?=



[html] view plain
ARCH ?=arm
CROSS_COMPILE ?=arm-eabi-

3)导出交叉编译器目录为环境变量
$ export PATH=$PATH:~/android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin

4)编译内核

[html] view plain
goldfish$ make goldfish_armv7_defconfig

goldfish$ make

编译完成后,可看到类似如下的输出:

[html] view plain
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready

5)从模拟器中启动内核镜像

[html] view plain
$emulator -kernel ~/android/kernel/goldfish/arch/arm/boot/zImage &

启动模拟器后,可从Settings->System->AboutPhone中查看内核版本信息。

⑺ 基于Android 12 的 LineageOS 19 发布了

自定义 ROM 是一个垂死的品种,但不可否认 LineageOS 的受欢迎程度——它仍然是您可以在设备上试用的最好的第三方 ROM 之一。在2 月淘汰基于 Android 10 的 LineageOS 17.1版本并于 4 月向近 60 台设备发布LineageOS 18.1 稳定版之后,该团队正式宣布了基于Android 12的 LineageOS 19。

感谢基于 Android 11 的 LineageOS 18.1 的所有辛勤工作,开发人员能够更有效地将其功能移植到 Android 12。ROM 的一些受欢迎的附加功能,例如内置防火墙、受限网络模式和应用程序隔离,已经是最初的 Android 12 构建的一部分。

该团队还将命名方案更改为“LineageOS 19”而不是 19.0 或 19.1,这是为了匹配 AOSP 约定并且由于 Android 转向季度维护发布模型而进行的切换。

LineageOS 19 中新功能的更新日志如下:

2021 年 3 月至 2022 年 4 月的安全补丁已合并到 LineageOS 16.0 至 19。

目前有 19 个构建基于 android-12.1.0_r4 标签,即 Pixel 6 系列标签。WebView 已更新为 Chromium 100.0.4896.58。

我们完全重做了 Android 12 中引入的音量面板,而是将其改为侧边弹出式扩展面板。

我们的 AOSP Gallery 应用程序分支已经看到了大量的修复和改进。

我们的更新程序应用程序已经看到了大量的错误修复和改进。

我们的网络浏览器 Jelly 已经看到了许多错误修复和改进!

我们已经为我们不久前集成的 FOSS Etar日历应用程序 的上游贡献了许多更改和改进!

我们为Seedvault备份应用程序 的上游贡献了许多更改和改进。

我们的 Recorder 应用程序已经看到了许多错误修复、改进和添加的功能。

Android TV 版本现在附带一个无广告的 Android TV 启动器,这与谷歌的广告启动器不同。

Android TV 版本现在附带一个键处理程序,使我们能够支持各种蓝牙和 IR 遥控器上的自定义键。

我们的adb_root服务不再与构建类型属性绑定。

我们的提取实用程序现在支持从大多数类型的工厂图像/打包的 OTA 图像中提取,大大简化了设备启动和 blob 提取。

我们的 SDK 添加了对高触摸轮询率的支持,允许在支持的设备上启用它。

AOSP Clang 工具链现在是我们用来编译内核的默认工具链。

高通的 Snapdragon 相机已被放弃,之前使用它的设备现在将使用 Camera2。

现在默认启用暗模式。

我们有一个全新的设置向导,带有全新的 Android 12 样式图标、动画和大量新的可配置页面!

我们为几乎所有应用程序(甚至系统应用程序)提供了一套全新的图标!

(18.1也是)我们有一个全新的默认壁纸,还有一整套壁纸可供选择,看看吧!这些壁纸在设计时考虑了 Android 12 的 Monet 主题功能,所以快去试试吧,看看你最喜欢哪种强调色!

(18.1 也是)Wi-Fi 显示适用于所有选择加入的设备,通过 Qualcomm 专有接口或新恢复的旧版 Miracast 接口!

(18.1 也是)我们现在支持针对不同类型的充电(有线或无线)自定义充电声音。

这里的坏消息是,由于 AOSP 中网络工作方式的变化,LineageOS 19 放弃了对一些旧设备的支持。AOSP 没有使用 Linux 的 iptables,而是切换到了eBPF,这应该更高效,但只支持使用 Linux 内核 4.9 或更高版本的设备。虽然可以将 BPF 向后移植到较旧的 Linux 内核版本,但所有当前的实现都是 hacky 并且不符合 LineageOS 团队所遵循的标准。对于许多旧手机来说,这可能是路的尽头,至少在官方支持方面是这样。

LineageOS 19 的初始版本可用于 Google Pixel 系列、华硕 ZenFone 5z 和 8、Moto G7 系列和 Moto One Power/Action/Vision、OnePlus 6 /6T,以及来自三星、联想和索尼。在接下来的几天和几周内,受支持设备的名单将继续增长。从此处获取适用于您设备的 LineageOS 19 版本。

如果您已经在运行 LineagOS 19 的非官方版本,则需要在升级到官方版本时擦除您的设备。如果您已经在运行官方但较旧版本的 ROM,则不需要彻底擦除,除非您设备的 Wiki 中明确说明。

⑻ 求安卓内核编译详细教程。附带开发工具。

自己上Google Android页面看

⑼ 请问如何编译Android 内核

携纸滴墨,情浓如醇酒,韵味在文笔中流淌,虽清浅,但真诚,情怀温婉,写就一生孜孜不倦的爱恋,一切,源于文字。我手写我心,愿有人懂。做一个墨香女子,因文字而清新,因世事而挂心,缓行红尘陌土,为自己斟一阙淡然的词韵,缭绕晴空,悠扬至久远。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:710
制作脚本网站 发布:2025-10-20 08:17:34 浏览:972
python中的init方法 发布:2025-10-20 08:17:33 浏览:681
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:833
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:741
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1081
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:312
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:192
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:879
python股票数据获取 发布:2025-10-20 07:39:44 浏览:837