91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

wKgZO2kal-mAe3kOAAE_KkNPTr4555.png

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

(一)安裝必要的依賴包

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

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位庫文件的安裝,是由于一些編譯工具在運行時可能會依賴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í)行權限,最后將~/bin目錄添加到系統(tǒng)路徑中,這樣在任何目錄下都可以直接使用repo命令。

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

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

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

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

(四)構建系統(tǒng)

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

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

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

二、常見報錯及解決辦法

(一)找不到libncurses.so.5

在編譯過程中,有時可能會遇到類似cannot open shared object file: No such file or directory關于找不到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錯誤

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

解決辦法是打開對應的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/這一行刪除,保存文件后重新編譯即可。

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

首次編譯內核時,可能會遇到找不到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)中,可能會出現軟件沖突問題,如提示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進行降級操作,確認繼續(xù)即可。

1.重新安裝libssl-dev

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

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

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

1.確認錯誤信息

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

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

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

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

1.檢查交叉編譯工具鏈

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

?RK3568ARM64架構,需要使用aarch64-linux-gnu-系列工具鏈。可以通過以下命令確認工具鏈是否已安裝且路徑正確:

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

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

1.檢查依賴庫

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

?鏈接順序問題:調整鏈接順序,確保被依賴的庫放在后面。例如,假設main庫依賴sub庫,那么鏈接庫的順序應該是-lsub -lmain,而不是-lmain -lsub

1.符號未定義(undefined reference

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

?頭文件與實現不匹配:確保頭文件中的函數聲明與實現一致,例如在C++中,如果頭文件中函數聲明使用了extern "C",那么對應的實現文件也需要使用extern "C",否則會導致鏈接錯誤。

?靜態(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或內核編譯問題

makerockchip_linux_defconfigmakeprepare modules_prepare

?內核配置:若編譯內核模塊,需先編譯內核頭文件,并確保模塊與內核版本一致。可以通過以下命令進行內核配置和準備:

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

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

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

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

?庫文件架構不匹配:確認庫文件是aarch64架構,而非x86_64armhf??梢允褂?/span>file命令檢查庫文件的架構,例如file libexample.so,如果輸出結果顯示不是aarch64架構,則需要更換為正確架構的庫文件。

1.其他常見問題

makeclean &&makedistcleanmake-j$(nproc)

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

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

?ABI兼容性:確保所有庫和工具鏈使用相同的ABI(如glibc版本一致)。不同版本的glibc庫可能具有不同的ABI接口,如果庫和工具鏈使用的glibc版本不一致,可能會導致編譯或運行時錯誤。

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

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

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

    關注

    12

    文章

    4023

    瀏覽量

    133955
  • 環(huán)境搭建

    關注

    0

    文章

    60

    瀏覽量

    9461
  • RK3568
    +關注

    關注

    5

    文章

    644

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    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移植之源碼結構簡介

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

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

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

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

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

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

    Android11源碼,編譯完會在相應的目錄下自動生成對應名字的文件。/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 預安裝應用功能在進行本章節(jié)時,需要將迅為提供的Android11源碼編譯
    發(fā)表于 08-25 18:06

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

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

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

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

    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ā)板演示

    技術分享 | RK3568 Android11 如何實現自啟動應用

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