chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RK3568 Android11編譯環(huán)境搭建及報錯解決指南

jf_44130326 ? 來源:Linux1024 ? 2026-02-04 17:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式開發(fā)領(lǐng)域,RK3568芯片憑借其出色的性能被廣泛應(yīng)用。基于RK3568進(jìn)行Android11系統(tǒng)的開發(fā),首先要搭建好編譯環(huán)境。本文將詳細(xì)介紹在Ubuntu20.04系統(tǒng)上搭建RK3568 Android11編譯環(huán)境的過程,并針對常見的報錯給出解決辦法。

wKgZO2kal-mAe3kOAAE_KkNPTr4555.png

一、編譯環(huán)境搭建步驟

(一)安裝必要的依賴包

在開始搭建編譯環(huán)境之前,需要確保系統(tǒng)安裝了AOSP編譯工具和相關(guān)依賴。打開終端,依次輸入以下命令:

sudo apt-getupdatesudo apt-getinstall-y bison g++-multilib git gnupg flex libc6-dev-i386 lib32ncurses5-dev lib32z1 liblz4-tool openjdk-8-jdk python unzip x11-utils

這些命令會更新軟件包列表,并安裝編譯所需的各種工具和庫。其中,openjdk-8-jdk是編譯Android系統(tǒng)所必需的Java開發(fā)工具包,因為Android系統(tǒng)的部分代碼是基于Java語言編寫的。而lib32ncurses5-dev32位庫文件的安裝,是由于一些編譯工具在運(yùn)行時可能會依賴32位的庫環(huán)境。

(二)安裝repo工具

repo工具是Android開源項目用來管理多個Git倉庫的工具,在獲取Android源碼時必不可少。通過以下命令安裝repo工具:

mkdir-p ~/bincurl > ~/bin/repochmoda+x ~/bin/repoexportPATH=~/bin:$PATH

上述命令首先創(chuàng)建了一個~/bin目錄用于存放repo工具,接著通過curl命令下載repo工具腳本,并賦予其可執(zhí)行權(quán)限,最后將~/bin目錄添加到系統(tǒng)路徑中,這樣在任何目錄下都可以直接使用repo命令。

(三)初始化和同步源代碼

完成repo工具的安裝后,就可以使用它來初始化和同步Android11的源代碼。在終端中輸入以下命令:

repoinit -u -b android-11.0.0_r8(舉例)reposync

repo init命令用于初始化一個新的Android代碼倉庫,-u參數(shù)指定了代碼倉庫的URL,-b參數(shù)指定了要同步的分支版本,這里選擇的是Android11.0.0的第8個版本。repo sync命令則會根據(jù)初始化的配置,從遠(yuǎn)程倉庫同步所有相關(guān)的代碼到本地,這個過程可能會比較耗時,取決于網(wǎng)絡(luò)狀況和代碼量的大小。

(四)構(gòu)建系統(tǒng)

當(dāng)源代碼同步完成后,就可以開始構(gòu)建系統(tǒng)了。在構(gòu)建之前,需要先設(shè)置一些環(huán)境變量并選擇編譯目標(biāo)。在終端中依次輸入以下命令:

sourcebuild/envsetup.shlunch rk3568-userdebugmake -j$(nproc)

source build/envsetup.sh命令用于設(shè)置Android編譯環(huán)境的相關(guān)變量,這些變量包含了編譯所需的各種路徑和配置信息。lunch命令用于選擇編譯目標(biāo),rk3568-userdebug表示針對RK3568芯片的用戶調(diào)試版本。最后的make -j$(nproc)命令是正式開始編譯系統(tǒng),-j$(nproc)參數(shù)表示使用系統(tǒng)的所有可用核心數(shù)進(jìn)行并行編譯,以加快編譯速度。

二、常見報錯及解決辦法

(一)找不到libncurses.so.5

在編譯過程中,有時可能會遇到類似cannot open shared object file: No such file or directory關(guān)于找不到libncurses.so.5庫的錯誤。這是因為編譯過程依賴的libncurses庫缺失或版本不匹配。

1.對于Ubuntu/Debian系統(tǒng)

sudo apt-getupdatesudo apt-getinstall libncurses5ls/usr/lib/libncurses.so.5

(二)module source path "xxx/.git" does not exist錯誤

在編譯時,可能會出現(xiàn)類似于error: hardware/rockchip/librga/Android.bp1: module "gen_rga_version": module source path "hardware/rockchip/librga/.git" does not exist這樣的錯誤。這通常是因為相關(guān)模塊在配置中引用了.git目錄,但實際該目錄不存在。

解決辦法是打開對應(yīng)的Android.bp文件(如hardware/rockchip/librga/Android.bp),將文件中引用.git目錄的部分刪除。例如,在hardware/rockchip/librga/Android.bp文件中,找到類似如下的代碼段:

genrule {  name:"gen_rga_version",  srcs: (   "version.h.template",-   ".git/"  ),  out: ("version.h"),  cmd:"rm -f$(location version.h)&& "+"bash$(location version.sh)$(in)>$(out)",}

.git/這一行刪除,保存文件后重新編譯即可。

(三)編譯內(nèi)核時找不到openssl/bio.h文件

首次編譯內(nèi)核時,可能會遇到找不到openssl/bio.h文件的錯誤,錯誤信息類似如下:

xxxxxx:~/source/rk3568/rk3568_android_11/kernel$ make ARCH=arm64 BOOT_IMG=boot_sample.img rk3568-evb1-ddr4-v10.img HOSTCC scripts/extract-certscripts/extract-cert.c25: fatal error: openssl/bio.h: 沒有那個文件或目錄compilation terminated.make(1): *** (scripts/extract-cert) 錯誤1make: *** (scripts) 錯誤2

這是因為系統(tǒng)缺少libssl-dev庫。解決方法如下:

1.安裝libssl-dev

?在終端中輸入命令sudo apt-get install libssl-dev嘗試安裝。但在Ubuntu20.04系統(tǒng)中,可能會出現(xiàn)軟件沖突問題,如提示libssl-dev :依賴: libssl1.0.0 (= 1.0.2g-1ubuntu4)但是1.0.2g-1ubuntu4.20正要被安裝。

1.處理軟件沖突

?可以先嘗試安裝指定版本的libssl1.0.0,輸入命令sudo apt-get install libssl1.0.0=1.0.2g-1ubuntu4。此時系統(tǒng)可能會提示將對libssl1.0.0進(jìn)行降級操作,確認(rèn)繼續(xù)即可。

1.重新安裝libssl-dev

?安裝完指定版本的libssl1.0.0后,再次輸入命令sudo apt-get install libssl-dev進(jìn)行安裝。安裝完成后,重新編譯內(nèi)核即可正常進(jìn)行。

(四)編譯過程中的鏈接錯誤

RK3568的編譯過程中,還可能會遇到鏈接錯誤,這類錯誤通常與工具鏈配置、依賴庫缺失、符號未定義或路徑問題有關(guān)。

1.確認(rèn)錯誤信息

?常見的鏈接錯誤信息有:

undefined reference to...:表示未定義的符號(函數(shù)或變量),可能是源碼缺失或依賴庫未鏈接。例如,如果在編譯過程中提示undefined reference to 'function_name',則需要檢查是否有包含function_name函數(shù)定義的源文件未被正確編譯或鏈接。

cannot find -lxxx:表示找不到指定的庫文件(如-lrockchip)。比如提示cannot find -lrockchip,那就需要確認(rèn)librockchip.so庫文件是否存在,以及鏈接路徑是否正確。

relocation truncated to fit:這通常是內(nèi)存地址分配問題,常見于32/64位混合編譯的情況。

1.檢查交叉編譯工具鏈

whichaarch64-linux-gnu-gcc
exportCROSS_COMPILE=aarch64-linux-gnu-exportARCH=arm64

?RK3568ARM64架構(gòu),需要使用aarch64-linux-gnu-系列工具鏈。可以通過以下命令確認(rèn)工具鏈?zhǔn)欠褚寻惭b且路徑正確:

?如果輸出類似/usr/bin/aarch64-linux-gnu-gcc,則說明工具鏈已安裝且路徑正確。如果未安裝,需要從官方或可靠渠道下載并安裝對應(yīng)的交叉編譯工具鏈。

?在編譯時,還需要指定工具鏈,通過以下命令設(shè)置環(huán)境變量:

1.檢查依賴庫

?缺失庫文件:確保所有依賴庫(如librockchip.so、libmali.so)已正確安裝,且路徑通過-L指定。例如,如果librockchip.so庫文件安裝在/usr/local/lib目錄下,在編譯命令中需要添加-L/usr/local/lib來指定庫文件的搜索路徑。

?鏈接順序問題:調(diào)整鏈接順序,確保被依賴的庫放在后面。例如,假設(shè)main庫依賴sub庫,那么鏈接庫的順序應(yīng)該是-lsub -lmain,而不是-lmain -lsub。

1.符號未定義(undefined reference

?源碼缺失:檢查是否漏編譯某些源碼文件(.c/.cpp),或Makefile中未包含相關(guān)目標(biāo)。比如在一個項目中,如果有一個function.c文件實現(xiàn)了某個功能,但在Makefile中沒有將其添加到編譯目標(biāo)中,就會導(dǎo)致鏈接時找不到該函數(shù)的定義。

?頭文件與實現(xiàn)不匹配:確保頭文件中的函數(shù)聲明與實現(xiàn)一致,例如在C++中,如果頭文件中函數(shù)聲明使用了extern "C",那么對應(yīng)的實現(xiàn)文件也需要使用extern "C",否則會導(dǎo)致鏈接錯誤。

?靜態(tài)庫順序:對于靜態(tài)庫,需要按依賴順序排列,或用--start-group--end-group包裹。例如,如果有libfoo.alibbar.a兩個靜態(tài)庫,且libfoo.a依賴libbar.a,那么鏈接命令可以寫成-Wl,--start-group -lfoo -lbar -Wl,--end-group。

1.SDK或內(nèi)核編譯問題

makerockchip_linux_defconfigmakeprepare modules_prepare

?內(nèi)核配置:若編譯內(nèi)核模塊,需先編譯內(nèi)核頭文件,并確保模塊與內(nèi)核版本一致??梢酝ㄟ^以下命令進(jìn)行內(nèi)核配置和準(zhǔn)備:

?設(shè)備樹未編譯:確認(rèn)設(shè)備樹文件(.dts)已編譯為.dtb,并放置在正確路徑。設(shè)備樹文件描述了硬件設(shè)備的信息,如果設(shè)備樹未正確編譯或放置位置錯誤,可能會導(dǎo)致編譯錯誤或設(shè)備驅(qū)動加載失敗。

1.檢查文件系統(tǒng)路徑

exportCFLAGS="--sysroot=/path/to/sdk/sysroot"

?sysroot配置:交叉編譯時需指定--sysroot或通過環(huán)境變量設(shè)置根文件系統(tǒng)路徑。例如,可以通過以下命令設(shè)置環(huán)境變量:

?庫文件架構(gòu)不匹配:確認(rèn)庫文件是aarch64架構(gòu),而非x86_64armhf。可以使用file命令檢查庫文件的架構(gòu),例如file libexample.so,如果輸出結(jié)果顯示不是aarch64架構(gòu),則需要更換為正確架構(gòu)的庫文件。

1.其他常見問題

makeclean &&makedistcleanmake-j$(nproc)

make clean命令會刪除編譯生成的中間文件,make distclean則會更徹底地刪除配置文件等,重新執(zhí)行make命令可以確保整個編譯過程從最開始的狀態(tài)進(jìn)行,有時可以解決一些因殘留文件導(dǎo)致的編譯錯誤。

?內(nèi)存不足:鏈接大型項目時可能因內(nèi)存不足失敗,嘗試增加交換分區(qū)或簡化編譯選項。在編譯過程中,如果系統(tǒng)提示內(nèi)存不足,可以通過增加交換分區(qū)來臨時解決內(nèi)存問題?;蛘咴?/span>make命令中減少并行編譯的核心數(shù),如將make -j$(nproc)改為make -j4(假設(shè)系統(tǒng)有4個核心),以降低內(nèi)存的使用量。

?ABI兼容性:確保所有庫和工具鏈?zhǔn)褂孟嗤?/span>ABI(如glibc版本一致)。不同版本的glibc庫可能具有不同的ABI接口,如果庫和工具鏈?zhǔn)褂玫?/span>glibc版本不一致,可能會導(dǎo)致編譯或運(yùn)行時錯誤。

?清理重建:嘗試徹底清理后重新編譯。可以使用以下命令進(jìn)行清理和重新編譯:

通過以上詳細(xì)的編譯環(huán)境搭建步驟和常見報錯解決辦法,希望能幫助開發(fā)者順利在Ubuntu20.04系統(tǒng)上完成RK3568 Android11的編譯工作,為后續(xù)的嵌入式開發(fā)項目打下堅實的基礎(chǔ)。在實際開發(fā)過程中,如果遇到其他問題,還可以參考瑞芯微SDK文檔以及相關(guān)的開源社區(qū)論壇,獲取更多的技術(shù)支持和解決方案。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    4022

    瀏覽量

    133953
  • 環(huán)境搭建
    +關(guān)注

    關(guān)注

    0

    文章

    60

    瀏覽量

    9461
  • RK3568
    +關(guān)注

    關(guān)注

    5

    文章

    644

    瀏覽量

    7901
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    RK3568 android SDK報錯的信息是什么

    RK3568 android SDK報錯的信息是什么?求解答
    發(fā)表于 03-02 09:15

    怎樣去處理RK3568 android11 kernel生成的文件呢

    怎樣去處理RK3568 android11 kernel生成的文件呢?
    發(fā)表于 03-02 06:01

    迅為iTOP-RK3568開發(fā)板Android11移植之源碼結(jié)構(gòu)簡介

    硬件平臺:迅為iTOP-3568開發(fā)板平臺軟件版本:Android11 手把手教你在rk3568開發(fā)板上移植Android11。內(nèi)含硬件原理圖分析、底層驅(qū)動編寫與
    發(fā)表于 03-28 14:45

    【北京迅為】itop-rk3568開發(fā)板官方Android11移植教程

    手把手教你在rk3568開發(fā)板上移植Android11。內(nèi)含硬件原理圖分析、底層驅(qū)動編寫與Android底層框架,JNI編程等眾多技能點,讓您的學(xué)習(xí)和使用過程更加輕松~
    發(fā)表于 03-28 15:20

    【超前發(fā)布】瑞芯微RK3568視頻教程

    iTOP-3568開發(fā)板視頻教程本次更新的視頻有三期RK3568開發(fā)板開發(fā)環(huán)境搭建RK3568開發(fā)板的啟動模式以及引導(dǎo)順序
    發(fā)表于 05-07 15:43

    迅為干貨 |瑞芯微RK3568開發(fā)板Android11系統(tǒng)開發(fā)筆記

    Android11源碼,編譯完會在相應(yīng)的目錄下自動生成對應(yīng)名字的文件。/home/topeet/Android11/rk_android11.0_sdk/out/target/prod
    發(fā)表于 06-15 16:56

    【重磅來襲】迅為RK3568 Android11系統(tǒng)移植視頻教程

    Android11原廠BSP7_將原廠Android11源碼整體編譯...8_原廠uboot源碼頂層目錄講解9_通過ARMv8啟動流程了解RK3568...10_使用ddrbin_to
    發(fā)表于 07-08 14:43

    迅為RK3568開發(fā)Android12系統(tǒng)燒寫 Android 固件

    /Image-rk3568_r/(Android11)或者 rockdev/Image-rk3568_s/(Android12)目錄下, 可以拷貝源碼
    發(fā)表于 08-01 16:41

    迅為RK3568開發(fā)板Android11系統(tǒng)開發(fā)筆記分享

    1、迅為RK3568開發(fā)板Android11系統(tǒng)開發(fā)筆記Android11 預(yù)安裝應(yīng)用功能在進(jìn)行本章節(jié)時,需要將迅為提供的Android11源碼編譯
    發(fā)表于 08-25 18:06

    iTOP-RK3568開發(fā)板Android11設(shè)置語言和默認(rèn)時區(qū)

    += \\persist.sys.language=zh \\persist.sys.country=CN \\persist.sys.timezone=Asia/Shanghai修改完,保存修改,重新編譯 android 源碼。更多內(nèi)容:迅為
    發(fā)表于 04-06 10:12

    迅為iTOP-RK3568開發(fā)板Android11移植之源碼結(jié)構(gòu)簡介

    手把手教你在rk3568開發(fā)板上移植Android11。內(nèi)含硬件原理圖分析、底層驅(qū)動編寫與Android底層框架,JNI編程等眾多技能點,讓您的學(xué)習(xí)和使用過程更加輕松~
    的頭像 發(fā)表于 03-28 14:34 ?2481次閱讀
    迅為iTOP-<b class='flag-5'>RK3568</b>開發(fā)板<b class='flag-5'>Android11</b>移植之源碼結(jié)構(gòu)簡介

    RK3568 SDK 的編譯

    RK3568 SDK 的編譯
    的頭像 發(fā)表于 12-13 11:46 ?2879次閱讀
    <b class='flag-5'>RK3568</b> SDK 的<b class='flag-5'>編譯</b>

    【重磅來襲】迅為RK3568 Android11系統(tǒng)移植視頻教程

    【重磅來襲】迅為RK3568 Android11系統(tǒng)移植視頻教程
    的頭像 發(fā)表于 07-08 15:37 ?1742次閱讀
    【重磅來襲】迅為<b class='flag-5'>RK3568</b> <b class='flag-5'>Android11</b>系統(tǒng)移植視頻教程

    Android11修改攝像頭前后置方法,觸覺智能RK3568開發(fā)板演示

    本文介紹在Android11系統(tǒng)下,修改攝像頭前后置屬性的方法。使用觸覺智能EVB3568鴻蒙開發(fā)板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、
    的頭像 發(fā)表于 11-28 15:25 ?71次閱讀
    <b class='flag-5'>Android11</b>修改攝像頭前后置方法,觸覺智能<b class='flag-5'>RK3568</b>開發(fā)板演示

    技術(shù)分享 | RK3568 Android11 如何實現(xiàn)自啟動應(yīng)用

    隨著Android版本的不斷升級,對于應(yīng)用權(quán)限的管理會更加苛刻。我司IAC-RK3568-Kit開發(fā)板默認(rèn)搭載Android11,相比較之前RK3288的產(chǎn)品安卓版本變更較大,有些客戶
    的頭像 發(fā)表于 02-05 17:26 ?389次閱讀
    技術(shù)分享 | <b class='flag-5'>RK3568</b> <b class='flag-5'>Android11</b> 如何實現(xiàn)自啟動應(yīng)用