A40i &T3 全原始碼編譯-ARM Linux核心在PC Linux的編譯方法
本章講述方法,採用硬體平臺為 飛凌OKA40i開發板、OKT3開發板,已經驗證成功,其它平臺板卡,請參考使用。
全原始碼編譯
注意:全原始碼編譯消耗時間過長,不推薦使用。
1、編譯
在進行本章實驗之前,預設已經搭建好交叉編譯器環境,即交叉編譯器安裝成功。
本節介紹ARM Linux核心在PC Linux的編譯方法。
交叉編譯器路徑:lichee/out/sun8iw11p1/linux/common/buildroot/host/opt/ext-toolchain/bin。
配置交叉編譯環境:
# source /root/workspace/allwinner/A40i/bsp/lichee/env.sh
注意:使用build.sh編譯原始碼不需要配置交叉編譯環境,指令碼已經配置好。
1.1 製作img燒寫映象
注意:boot核心與檔案系統一起編譯。
步驟1:配置
# cd /root/workspace/allwinner/A40i/bsp/lichee/
#./build.sh config
Welcome to mkscript setup progress
All available chips:
0. sun8iw11p1
Choice: 0
All available platforms:
0. android
1. dragonboard
2. linux
3. camdroidChoice: 2
All available kernel:
0. linux-3.10
Choice: 0
All available boards:
0. OKA40i_C
1. OKT3_C
2. a40i-p3
Choice: 0
All available buildroot:
0. buildroot
1. buildroot-201611
Choice: 1
select buildroot-201611
All available float:
0. gnueabi
1. gnueabihf
Choice: 1
select gnueabihf
All available qt version:
0. 5.9.0
Choice: 0
select 5.9.0
create misc_config gnueabihf
All available lcd resolutions:
0. 480x272
1. 800x480
2. 800x600
3. 1024x600
4. 1024x600mipi
5. 1280x800
6. 800x480_v1
7. 800x600_v1
8. 1024x600_v1
9. 1024x600mipi_v1
10. 1280x800_v1
Choice: 3
注意:
當編譯T3時,選擇OKT3_C;
使用LVDS屏時:
如使用為V1.2版本核心板,選擇5. 1280x800;
如使用V1.1核心板,選擇10.1280x800_v1。
快捷辦法:直接修改.buildconfig export LICHEE_RESOLUTION=1080p使用hdmi獨立顯示方法。
步驟2:編譯
# cd /root/workspace/allwinner/A40i/bsp/lichee/
#./build.sh
步驟3:編譯Qt (可選)
釋放Qt OpenGLlib到交叉編譯器位置,檔案儲存位置(編譯過程報找不到GLESv2)。
1 使用者資料\Linux\linux\工具\sysroot.tar.gz
# cd /root/workspace/allwinner/A40i/bsp/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr/arm-buildroot-linux-gnueabihf
# tar xvf sysroot.tar.gz
#最終生成sysroot替換沒有Mali庫的sysroot。
注意:如果出現路徑錯誤,請把/root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/qt-everywhere-opensource-src-5.9.0 刪除,重新釋放壓縮包,並且複製/root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/setenvs.sh到新釋放的qt-everywhere-opensource-src-5.9.0目錄中去。
#cd /root/workspace/allwinner/A40i/bsp/lichee/buildroot-201611/dl/qt-everywhere-opensource-src-5.9.0
# source setenvs.sh #虛擬機器編譯的話setenv.sh 97行修改成 -j 1 表示並行編譯的現成數量,否則當機
# makeconfig
# makeall
# makeinstall
# cd /root/workspace/allwinner/A40i/bsp/lichee/
# rm -fr `find ./linux-3.10 -name “*.o” ` #編譯前要刪除linux-3.10/*.o
# ./build.sh
注意:編譯過程核心報錯,有兩種解決辦法:
1 cd /root/workspace/allwinner/A40i/bsp/lichee/
rm -fr `find ./ linux-3.10 -name “*.o” `
2 cd /root/workspace/allwinner/A40i/bsp/lichee/
cd linux-3.10
make distclean
步驟4:打包
# cd /root/workspace/allwinner/A40i/bsp/lichee/
#./build.sh pack
/root/workspace/allwinner/A40i/bsp/lichee/tools/pack/sun8iw11p1_linux_OKA40i_C_uart0-1024x600.img
生成的燒寫映象。
注意:客戶可根據自身要求選做,操作結束需要重新編譯,打包。
Ø 命令行模式程式新增
在lichee/buildroot-201611/target/user_rootfs_apps/cmd/subs 複製一個資料夾改名字
複製rtc helloworld
# cp -fr rtc helloworld
# cd helloworld
修改檔名字
#mv rtc.c helloworld.c
修改Makefile
# vi Makefile
修改後
TARGET = helloworld
@$(CC) -o $(TARGET) helloworld.c
配置參與編譯列表
cd lichee/buildroot-201611/target/user_rootfs_apps/cmd/configs
vi cmd_defconfig
新增
helloworld
qt5 gui模式程式新增
在lichee/buildroot-201611/target/user_rootfs_apps/qt5/subs 複製一個資料夾改名字
# cp -fr hello_gui helloworld
# cd helloworld
修改檔名字
#mv hello_gui.pro helloworld.pro
修改qt5工程檔案
TARGET= helloworld
注意:要新增庫的路徑
LIBS += -L../../../../../../tools/pack/chips/sun8iw11p1/hal/gpu/fbdev/lib/ -lGLESv2
修改Makefile
# vi Makefile
修改後
TARGET = helloworld
配置參與編譯列表
cd lichee/buildroot-201611/target/user_rootfs_apps/qt5/configs
vi qt5_defconfig
新增
helloworld
硬體編碼解碼程式所在路徑
lichee/buildroot-201611/target/user_rootfs_misc
相關文章
- 如何編譯 Linux 核心編譯Linux
- linux核心修改編譯Linux編譯
- Linux核心模組編譯Linux編譯
- 交叉編譯場景分析(arm-linux)(四)--編譯readline和ncurses編譯Linux
- 在 21 世紀該怎樣編譯 Linux 核心編譯Linux
- Linux編譯核心 Ubuntu18.04 -2020.11.04Linux編譯Ubuntu
- 交叉編譯場景分析(arm-linux)--序編譯Linux
- Linux環境PostGIS原始碼編譯安裝Linux原始碼編譯
- linux下基於官方原始碼編譯ipoptLinux原始碼編譯
- 高效學習Linux核心——核心模組編譯Linux編譯
- hi3520d核心編譯編譯方法編譯
- 編譯安裝最新的Linux系統核心編譯Linux
- openEuler arm 環境原始碼編譯mysql 8.0.37原始碼編譯MySql
- Linux中程式包管理及程式的原始碼編譯Linux原始碼編譯
- 在linux下編譯hibernate筆記Linux編譯筆記
- linux-編譯koLinux編譯
- LINUX下編譯TriangleLinux編譯
- linux-原始碼的編譯安裝和解除安裝Linux原始碼編譯
- 基於Linux的MySQL5.7原始碼編譯安裝LinuxMySql原始碼編譯
- openssl原始碼編譯及配置方法原始碼編譯
- 全志A40i開發板編譯環境的搭建編譯
- Kubernetes原始碼編譯原始碼編譯
- Spring原始碼編譯Spring原始碼編譯
- 04_Linux下把驅動編譯進核心Linux編譯
- Linux環境下, 原始碼編譯安裝詳解 (編譯CMake 3.15 和 gcc 5.3.0 為例)Linux原始碼編譯GC
- linux與windows交叉編譯LinuxWindows編譯
- Linux中gcc編譯工具LinuxGC編譯
- Linux 編譯安裝 PythonLinux編譯Python
- Linux編譯安裝NginxLinux編譯Nginx
- Linux下使用make命令編譯c原始檔Linux編譯
- ARM 之主流編譯器編譯
- Jtti:美國Linux伺服器原始碼編譯的安裝方式JttiLinux伺服器原始碼編譯
- 香橙派編譯linux核心支援ebpf和虛擬WIFI編譯LinuxeBPFWiFi
- 原始碼編譯Vim 8原始碼編譯
- MongoDB(0)- 原始碼編譯MongoDB原始碼編譯
- XCode 編譯 PAG 原始碼XCode編譯原始碼
- Docker編譯Azerothcore原始碼Docker編譯原始碼
- Linux 編譯 安裝 PHP 7.3.1Linux編譯PHP