當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 編程軟體 » 怎樣編譯android內核

怎樣編譯android內核-九游会j9娱乐平台

發布時間: 2024-07-06 08:59:28

① 在編譯android內核的時候出現下面的錯誤,是怎麼回事

解決方案:找到工程中makefile文件,將其中 「-m64" 字元串刪除即可。
原因:gcc 3.4 或者更高版本,已經將其去除了,所以會出現上面的錯誤!
去android源代碼網站找樓主編譯android版本的對應gcc,安裝後重新編譯

② 做安卓軟體開發需要哪些工具

android是基於linux的,所以在ubuntu下是最好的。當然windows下面也是可以的。但是android的內核是基於linux的,並且通過終端進行各種操作,非常強大,也比cmd方便。

大致開發的環境是這樣:ubuntu系統,以前是windows然後安裝了ubuntu的虛擬機。android大部分的開發都是中間層到頂層的應用開發,所以基本上是java開發。

表配如下:1eclipse是開發java必備,也是android必備。(當然前提是先安裝jdk1.6)

2下載android的sdk和adt。這是android的開發必須的工具,adb、ddms、mksdcard、aapt,debug 必備

a安裝完eclipse後,通過help=〉install new software把adt安裝好

b然後window=>preference設置好sdk的路徑即可

③ android源碼怎麼編譯生成recovery.img

recovery.img生成過程
l630-l637 依賴關系
(from: build/core/makefile)630 $(installed_recoveryimage_target): $(mkbootfs) $(mkbootimg) $(minigzip) /631 $(installed_ramdisk_target) /632 $(installed_bootimage_target) /633 $(recovery_binary) /634 $(recovery_initrc) $(recovery_kernel) /635 $(installed_2ndbootloader_target) /636 $(recovery_build_prop) $(recovery_resource_deps) /637 $(recovery_install_ota_keys)

installed_recoveryimage_target 為我們的編譯目標:

584 installed_recoveryimage_target := $(product_out)/recovery.img

它依賴很多其它目標:
1.mkbootfs, minigzip, mkbootimg,pc端工具軟體:(from build/core/config.mk)265 mkbootfs := $(host_out_executables)/mkbootfs$(host_executable_suffix)266 minigzip := $(host_out_executables)/minigzip$(host_executable_suffix)267 mkbootimg := $(host_out_executables)/mkbootimg$(host_executable_suffix)

2.installed_ramdisk_target,標准根文件系統 ramdisk.img:

326 built_ramdisk_target := $(product_out)/ramdisk.img328 # we just build this directly to the install location.329 installed_ramdisk_target := $(built_ramdisk_target) 3.installed_bootimage_target, 即boot.img,標准內核及標准根文件系統:362 installed_bootimage_target := $(product_out)/boot.img

4. recovery_binary, recovery可執行程序,源碼位於:bootable/recovery

590 recovery_binary := $(call intermediates-dir-for,executables,recovery)/recovery

5. recovery_initrc,recovery模式的init.rc, 位於 bootable/recovery/etc/init.rc

586 recovery_initrc := $(call include-path-for, recovery)/etc/init.rc

6. recovery_kernel, recovery 模式的kernel, 同標准內核

587 recovery_kernel := $(installed_kernel_target) # same as a non-recovery system

7.installed_2ndbootloader_target,我們不用。

8. recovery_build_prop, recovery 模式的build.prop, 同標准模式。589 recovery_build_prop := $(installed_build_prop_target)

9. recovery_resource_deps, recovery 模式使用的res, 位於:recovery/custom/{proct_name}/res, 以及設備自定義部分(我們沒用到)

591 recovery_resources_common := $(call include-path-for, recovery)/custom/$(target_product)/res592 recovery_resources_private := $(strip $(wildcard $(target_device_dir)/recovery/res))593 recovery_resource_deps := $(shell find $(recovery_resources_common) 594 $(recovery_resources_private) -type f) 10. recovery_install_ota_keys, ota 密鑰:

618 # generate a file containing the keys that will be read by the619 # recovery binary.620 recovery_install_ota_keys := /621 $(call intermediates-dir-for,packaging,ota_keys)/keysl638-l655 准備內容
638 @echo ----- making recovery image ------639 rm -rf $(target_recovery_out)640 mkdir -p $(target_recovery_out)641 mkdir -p $(target_recovery_root_out)642 mkdir -p $(target_recovery_root_out)/etc643 mkdir -p $(target_recovery_root_out)/tmp

准備recovery目錄:out/target/proct/{proct_name}/recovery 及其子目錄:

./root

./root/etc

./root/tmp644 echo copying baseline ramdisk...645 cp -r $(target_root_out) $(target_recovery_out)646 echo modifying ramdisk contents...647 rm -rf $(target_recovery_root_out)/res

從標准根文件系統拷貝所有文件, 刪除其res 目錄。

648 cp -f $(recovery_initrc) $(target_recovery_root_out)/649 cp -f $(recovery_binary) $(target_recovery_root_out)/sbin/ 拷貝recovery 模式的核心文件 init.rc 及 recovery 650 cp -rf $(recovery_resources_common) $(target_recovery_root_out)/651 $(foreach item,$(recovery_resources_private), /652 cp -rf $(item) $(target_recovery_root_out)/)653 cp $(recovery_install_ota_keys) $(target_recovery_root_out)/res/keys 拷貝資源文件及密鑰文件。 654 cat $(installed_default_prop_target) $(recovery_build_prop) /655 > $(target_recovery_root_out)/default.prop 生成屬性文件 default.prop, 它包含了標准根文件系統的default.prop (out/target/proct/{proct_name}/root/default.prop)以及system分區的build.prop (out/target/proct/{proct_name}/system/build.prop) l656-l661 最終生成recovery.img
656 $(mkbootfs) $(target_recovery_root_out) | $(minigzip) > $(recovery_ramdisk) 壓縮recovery根文件系統 657 build/quacomm/mkimage $(product_out)/ramdisk-recovery.img recovery > $(product_out)/ramdisk_recovery.img 加一個標識頭(recovery) 658 mv $(product_out)/ramdisk_recovery.img $(product_out)/ramdisk-recovery.img659 $(mkbootimg) $(internal_recoveryimage_args) --output $@660 @echo ----- made recovery image -------- $@661 $(hide) $(call assert-max-image-size,$@,$(board_recoveryimage_partition_size),raw)

和內核一起,生成recovery.img附:recovery 根文件系統目錄結構


$ tree

.

├── advanced_meta_init.rc

├── data

├── default.prop

├── dev

├── etc

├── init

├── init.factory.rc

├── init.goldfish.rc

├── init.quacomm.rc

├── init.rc

├── meta_init.rc

├── proc

├── res

│ ├── images

│ │ ├── icon_error.png

│ │ ├── icon_installing.png

│ │ ├── indeterminate1.png

│ │ ├── indeterminate2.png

│ │ ├── indeterminate3.png

│ │ ├── indeterminate4.png

│ │ ├── indeterminate5.png

│ │ ├── indeterminate6.png

│ │ ├── progress_empty.png

│ │ └── progress_fill.png

│ └── keys

├── sbin

│ ├── adbd

│ ├── advanced_meta_init

│ ├── meta_init

│ ├── meta_tst

│ └── recovery

├── sys

├── system

└── tmp

④ android內核用什麼語言寫的

android是基於linux內核,所以android核心部分是c語如瞎型言編寫的。但是android提供的sdk是基於java語言的,也就是說大部分用戶所使用神液的應用程序是用java編寫的。渣猜

⑤ android內核編譯時如何獲得.config文件

得到config之後,直接復制到你下載來的內核文件夾kernel下,更名為.config,打開終端,進入此目錄(假設你放在里你的home下,即~/kernel)運行make arch=arm menuconfig(arch=arm表示編譯的是arm平台的)

⑥ 怎麼修改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的結果

熱點內容
resin下jsp不能正常編譯 發布:2024-07-17 16:34:44 瀏覽:229
sqlserver如何切換主備伺服器 發布:2024-07-17 16:23:02 瀏覽:299
mc18伺服器ip 發布:2024-07-17 16:23:02 瀏覽:379
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:691
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:375
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:955
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:130
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:388
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
androidapk結構 發布:2024-07-17 15:10:43 瀏覽:945
网站地图