国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

編譯安卓?jī)?nèi)核教程(2023,6,13)

這篇具有很好參考價(jià)值的文章主要介紹了編譯安卓?jī)?nèi)核教程(2023,6,13)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

編譯安卓?jī)?nèi)核前需要準(zhǔn)備的東西。

  1. 一臺(tái)支持解鎖bootloader的手機(jī)
  2. 官方開(kāi)源地址,或者第三方整合好的也行
  3. 一個(gè)linux環(huán)境,虛擬機(jī)、wsl、termux等都可以
  4. 看得懂中文

開(kāi)始操作!

一、 從你的手機(jī)里面提取config.gz文件,在/proc/config.gz路徑,這個(gè)文件是構(gòu)建你手機(jī)內(nèi)核的配置文件,這個(gè)默認(rèn)是官方的,如果沒(méi)有這個(gè)文件,那你需要通過(guò)解包boot.img來(lái)獲取,稍后會(huì)說(shuō)。

二、拉取你官方開(kāi)源的內(nèi)核源碼以及設(shè)備樹(shù)(安卓9以后,默認(rèn)只開(kāi)源內(nèi)核了,設(shè)備樹(shù)這些,都不再開(kāi)放了)。

  1. 從你的品牌官方獲取開(kāi)源代碼,比如小米開(kāi)源地址,摩托羅拉開(kāi)源地址,真我手機(jī)開(kāi)源地址。把源碼拉取到本地。

  2. 如果你不想用官方的,想用第三方的,比如LineageOS,Crdroid也可以。

  3. 你沒(méi)有官方開(kāi)源也沒(méi)有第三方官方支持,那你可以不用看了,省點(diǎn)流量跟電量,去做別的事情吧- - 。

#git拉取示例
#--depth=1代表只拉取最新的源碼,可以極大減少拉取后的體積,縮減拉取時(shí)間
git clone --depth=1 https://github.com/ProjectBlaze-Devices/kernel_xiaomi_chime

三、配置基本構(gòu)建環(huán)境。
1.安裝Linux環(huán)境。(wsl、vm虛擬機(jī)、雙系統(tǒng)實(shí)體機(jī)的Linux,都可以)
2.安裝編譯工具。
Debian系列:(包括Ubuntu、Linux mint、優(yōu)麒麟、Uos、termux)

#Debian系列:
apt-get install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick
lib32ncurses5-dev lib32readline-dev lib32z1-dev libelf-dev liblz4-tool libncurses5 libncurses5-dev
libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync
schedtool squashfs-tools xsltproc
zip zlib1g-dev

ArchLinux系列

pacman -Syu git
cd ~ 
git clone https://aur.archlinux.org/aosp-devel.git
cd aosp-devel
makepkg -si

其它系列,自行查找對(duì)應(yīng)的工具安裝.

3.拉取內(nèi)核編譯工具(剛剛只是安裝基本構(gòu)建環(huán)境,這個(gè)編譯工具才是重頭戲,構(gòu)建安卓?jī)?nèi)核的工具,只能從安卓源碼里面拉取,而且有版本限制,太新不行,太老了也不行)

  1. 直接去LineageOS的GitHub官方倉(cāng)庫(kù)拉取
#官方GitHub拉取
git clone https://github.com/LineageOS/android_prebuilts_clang_kernel_linux-x86_clang-r416183b

#國(guó)內(nèi)gitee拉取
git clone https://gitee.com/SorryMyLife/android_prebuilts_clang_kernel_linux-x86_clang-r416183b

#如果你還需要GCC進(jìn)行編譯,那么就拉取這個(gè)
#arm64
git clone https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9

#國(guó)內(nèi)gitee

git clone https://gitee.com/SorryMyLife/android_prebuilts_gcc_linux-x86_aarch64_aarch64-linux-android-4.9

#arm32
git clone https://github.com/LineageOS/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9

#國(guó)內(nèi)gitee
git clone https://gitee.com/SorryMyLife/android_prebuilts_gcc_linux-x86_arm_arm-linux-androideabi-4.9
  1. 去Google source官方拉取

    如果你有才藝,可以直接訪問(wèn)Google

#arm64的gcc
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9

#arm32的gcc
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9

#arm64的clang
git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86

國(guó)內(nèi)的臨時(shí)解決方案

git config --global url."https://mirrors.tuna.tsinghua.edu.cn/git/AOSP".insteadOf https://android.googlesource.com

#arm64的gcc
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9

#上面配置完后,再拉取下面的代碼,就可以了

#arm32的gcc
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9

#arm64的clang
git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86

四、開(kāi)始構(gòu)建內(nèi)核源碼

  1. 先去你的內(nèi)核源碼里面看看,有沒(méi)有config文件。
cd 你的內(nèi)核源碼文件夾/arch/你的設(shè)備架構(gòu)/configs/

一般配置文件會(huì)在這里,以你這臺(tái)設(shè)備的代號(hào)命名,比如你的手機(jī)代號(hào)(codename)叫做lime,那么這個(gè)位置會(huì)有個(gè)帶lime字母的config文件。

cd 你的內(nèi)核源碼文件夾/arch/你的設(shè)備架構(gòu)/configs/vendor/

有的則是在這個(gè)路徑下的vendor文件夾里面

設(shè)備代號(hào)為chime的 示例 (可能會(huì)無(wú)法訪問(wèn),最好帶才藝進(jìn)去)

如果里面沒(méi)有config文件,那么你就需要從你的官方boot里面提取了,先下載或者從你設(shè)備提取boot分區(qū)出來(lái),上傳到Linux環(huán)境里面,cd到內(nèi)核源碼里面,執(zhí)行scripts/extract-ikconfig工具提取config信息。

cd 你的內(nèi)核源碼路徑
./scripts/extract-ikconfig 你的boot分區(qū)文件路徑 >> device_config
cp device_config arch/你的設(shè)備cpu架構(gòu)/configs/你的設(shè)備代號(hào)名稱_config
#或者這樣
cp device_config arch/你的設(shè)備cpu架構(gòu)/configs/temp_config
#取一個(gè)臨時(shí)的名字

2.解決完config文件后,那么就開(kāi)始構(gòu)建內(nèi)核。

cd 你的內(nèi)核源碼路徑
#告訴編譯器你構(gòu)建的是arm64的內(nèi)核,如果你不是64位的,那就把64刪掉
export ARCH=arm64
export SUBARCH=arm64

#配置之前同步好的內(nèi)核編譯器環(huán)境變量,讓當(dāng)前環(huán)境可以直接使用
#/home/sir/pstar/kernel/clang是clang編譯器的路徑
#它下面的bin則是可執(zhí)行二進(jìn)制文件存放的文件夾,我們需要調(diào)用這個(gè)里面的程序來(lái)開(kāi)始構(gòu)建內(nèi)核
export PATH="/home/sir/pstar/kernel/clang/bin:/home/sir/pstar/kernel/gcc64/bin:/home/sir/pstar/kernel/gcc32/bin:$PATH"

args="-j$(nproc --all) \ #-j$(nproc --all)這里是說(shuō)用當(dāng)年環(huán)境下最高的cpu線程進(jìn)行編譯
ARCH=arm64 \ 
SUBARCH=arm64 \
O=out \ #輸出路徑是在當(dāng)前位置的out文件夾
CC=clang \ #指定C語(yǔ)言文件編譯器為clang
CROSS_COMPILE=aarch64-linux-android- \ #配置交叉編譯的目標(biāo)平臺(tái)為arm64
CROSS_COMPILE_ARM32=arm-linux-androideabi- \ #配置32位交叉編譯器
CLANG_TRIPLE=aarch64-linux-gnu- " #負(fù)責(zé)交叉編譯的Linux編譯器
#這個(gè)也不清楚干嘛用的,就是它在構(gòu)建的時(shí)候,需要用到Linux的一些標(biāo)準(zhǔn)庫(kù)內(nèi)容
#但是安卓的編譯器閹割了,直接用安卓的編譯,會(huì)出現(xiàn)很多莫名其妙的錯(cuò)誤,所以就需要再配置一下這個(gè)編譯器了
#如果你的設(shè)備是32位的,這里也要修改的

#清理之前構(gòu)建的殘留內(nèi)容
make clean && make mrproper
#刪除out文件夾,也就是之前指定輸出的文件夾
rm -rf out 
#新建out文件夾,用來(lái)保存臨時(shí)產(chǎn)生的垃圾文件還有最終生成的內(nèi)核文件
mkdir -p out

#先檢測(cè)配置文件有沒(méi)有問(wèn)題,進(jìn)行初次構(gòu)建
make ${args} vendor/lineageos_pstar_defconfig 
#這里如果不加vendor,就會(huì)讀取
#內(nèi)核源碼/arch/你的設(shè)備架構(gòu)/configs/里面的配置文件
#這個(gè)完整路徑為: 內(nèi)核源碼/arch/你的設(shè)備架構(gòu)/configs/vendor/lineageos_pstar_defconfig 
#不加vendor的完整路徑為:內(nèi)核源碼/arch/你的設(shè)備架構(gòu)/configs/lineageos_pstar_defconfig 

#這里的args就是上面設(shè)置的臨時(shí)變量args里面的內(nèi)容
#開(kāi)始構(gòu)建內(nèi)核
make ${args} 

3.構(gòu)建內(nèi)核中如果出現(xiàn)一些報(bào)錯(cuò),你應(yīng)該去GitHub里面搜索,而不是用百度

4.構(gòu)建完成的內(nèi)核文件會(huì)根據(jù)不同的壓縮規(guī)則存放在:

你的內(nèi)核源碼/out/arch/你的設(shè)備架構(gòu)/boot/

END

參考文章:小米開(kāi)源 摩托羅拉開(kāi)源文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-631820.html

到了這里,關(guān)于編譯安卓?jī)?nèi)核教程(2023,6,13)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 安卓RK3399編譯驅(qū)動(dòng)MPU6050,實(shí)現(xiàn)內(nèi)核層與HAL層驅(qū)動(dòng)

    安卓RK3399編譯驅(qū)動(dòng)MPU6050,實(shí)現(xiàn)內(nèi)核層與HAL層驅(qū)動(dòng)

    今天我們一起學(xué)習(xí)一下如何實(shí)現(xiàn)對(duì)一款有驅(qū)動(dòng)代碼的傳感器適配安卓系統(tǒng) 開(kāi)發(fā)板:某AR眼鏡公司的開(kāi)發(fā)板RK3399 1. 什么是設(shè)備樹(shù)(.dts) DTS即Device Tree Source 設(shè)備樹(shù)源碼, Device Tree是一種描述硬件的數(shù)據(jù)結(jié)構(gòu),它起源于 OpenFirmware (OF)。 其主要目的是定義MCU各個(gè)引腳的接線功能,通過(guò)

    2024年02月04日
    瀏覽(59)
  • Android 13 關(guān)于安卓判斷通知權(quán)限

    判斷權(quán)限是否開(kāi)啟: public class NoticePermissionUtil { ? ??? private static final String CHECK_OP_NO_THROW = \\\"checkOpNoThrow\\\"; ??? private static final String OP_POST_NOTIFICATION = \\\"OP_POST_NOTIFICATION\\\"; ? ??? //調(diào)用該方法獲取是否開(kāi)啟通知欄權(quán)限 ??? public static boolean isNotifyEnabled(Context context) { ???????

    2023年04月13日
    瀏覽(22)
  • [Android]從零開(kāi)始的內(nèi)核編譯

    本教程將基于小米 10S 的內(nèi)核源碼進(jìn)行實(shí)例,其他型號(hào)的手機(jī)請(qǐng)自行尋找內(nèi)核源碼。具體內(nèi)容可以參考我的內(nèi)核編譯項(xiàng)目。 1. 獲取設(shè)備(手機(jī))代號(hào) 在安卓設(shè)備終端( adb shell )上執(zhí)行: 并尋找?guī)в?ro.xx.device 這一行,里面的內(nèi)容即為你的手機(jī)代號(hào),例如: 2. 獲取設(shè)備架構(gòu) 在

    2024年02月05日
    瀏覽(54)
  • Android驅(qū)動(dòng)開(kāi)發(fā)之如何編譯和更換內(nèi)核

    Android驅(qū)動(dòng)開(kāi)發(fā)之如何編譯和更換內(nèi)核

    編譯內(nèi)核可以使用圖形化的界面配置,也可以直接使用腳本。在X86_64模擬器環(huán)境下,不用交叉編譯,而交叉編譯工具很容易出現(xiàn)兼容問(wèn)題,一般也只能使用芯片廠商提供的工具,而不是GNU提供的工具。 android內(nèi)核開(kāi)發(fā)流程以及架構(gòu)變化了很多,詳情請(qǐng)看 內(nèi)核官網(wǎng) 內(nèi)核版本選擇

    2024年04月26日
    瀏覽(17)
  • 【linux內(nèi)核】Debian內(nèi)核編譯

    【linux內(nèi)核】Debian內(nèi)核編譯

    列出 Debian 內(nèi)各種版本的核心軟件包 apt安裝軟件包 編譯內(nèi)核源碼 安裝內(nèi)核 更新grub 參考: 8.10.?編譯內(nèi)核 (debian.org) Debian編譯內(nèi)核教程 - 時(shí)光旅行的懶貓 - 博客園 (cnblogs.com) 內(nèi)核編譯方法-tony_ayuan-ChinaUnix博客

    2024年02月17日
    瀏覽(48)
  • Linux內(nèi)核學(xué)習(xí)(包含Linux 2.6內(nèi)核編譯安裝流程)

    Linux內(nèi)核學(xué)習(xí)(包含Linux 2.6內(nèi)核編譯安裝流程)

    Linux內(nèi)核官方網(wǎng)站為:http://www.kernel.org 或者使用git將源碼clone下來(lái)(我這里使用的版本為2.6): clone下來(lái)的源碼目錄結(jié)構(gòu)如下:? 其中比較重要的目錄的官方描述如下: 對(duì)應(yīng)的中文描述如下: 由于centos7.6初始gcc版本為4.8.5,而編譯內(nèi)核需要的最低版本為5.1.0,所以需要安裝高

    2024年02月07日
    瀏覽(53)
  • 樹(shù)莓派Linux內(nèi)核編譯

    樹(shù)莓派內(nèi)核源代碼保存在GitHub上github.com/raspberrypi/linux,可以看做是Linux主線內(nèi)核代碼的一個(gè)分支。樹(shù)莓派內(nèi)核源代碼是從Linux主線的長(zhǎng)期維護(hù)的穩(wěn)定版本加上樹(shù)莓派特有的改動(dòng)形成的。樹(shù)莓派的內(nèi)核更新可以通過(guò)apt命令自動(dòng)更新到最新的穩(wěn)定版本。但是如果你需要使用到最新

    2024年02月08日
    瀏覽(28)
  • linux內(nèi)核分析編譯體驗(yàn)

    linux內(nèi)核分析編譯體驗(yàn)

    linux-2.6.22.6 下載地址 https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ linux-2.6.22.6_jz2440.patch下載地址 https://download.csdn.net/download/zjq_5586288/10438800?utm_source=bbsseo cd /home/li/kernel_learn/linux-2.6.22.6 patch -p1 …/linux-2.6.22.6_jz2440.patch 三種方式 (1)make menuconfig (2)使用默認(rèn)配置(defconfig)在上面

    2023年04月11日
    瀏覽(16)
  • Linux內(nèi)核的編譯、安裝、調(diào)試

    Linux內(nèi)核的編譯、安裝、調(diào)試

    Linux內(nèi)核下載The Linux Kernel Archives 打開(kāi) .config 更改 CONFIG_SYSTEM_TRUSTED_KEYS 和 CONFIG_SYSTEM_REVOCATION_KEYS 更改 CONFIG_DEBUG_INFO_BTF 注釋掉CONFIG_X86_X32 首先安裝模塊 這里加上 INSTALL_MOD_STRIP=1 是為了避免內(nèi)核啟動(dòng)時(shí)卡在 loading initial ramdisk 安裝內(nèi)核 更改引導(dǎo) 更改 grub 修改文件 更新 重啟 在

    2024年02月11日
    瀏覽(47)
  • 編譯Linux 2.6.34內(nèi)核

    《Linux內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(第三版)》中所用的內(nèi)核版本為2.6.34,這個(gè)版本太舊了,在高版本系統(tǒng)中編譯各種不支持,所以選了Ubuntu 14.04進(jìn)行編譯。 編譯環(huán)境 :Ubuntu 14.04 GCC版本:4.8.4 編譯的內(nèi)核版本:Linux 2.6.34 內(nèi)核源碼下載:https://mirrors.edge.kernel.org/pub/linux/kernel/ 解壓源碼l

    2024年02月10日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包