Ubuntu24.04 x86在Qt6.8.2 上交叉編譯 arm64

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本篇在Ubuntu 24.04 x86環境下交叉編譯Arm64,成功地在Qt 6.8.2當中上使用。


提示:以下是本篇文章正文内容,下面案例可供参考

一、安裝Qt 6.8.2

使用Qt官方進行下載,若遇到下載失敗,請自行尋找另外下載點。

https://download.qt.io/official_releases/online_installers/

相關依賴和版上幾偏差不多依照需求安裝即可

安裝勾選 (依照自己需求勾選)

  • 添加工具環境變數
$ vim ~/.bashrc

/* 添加CMake && Ninja 環境變數 */
export PATH=/home/ptc/Qt/Tools/CMake/bin:/home/ptc/Qt/Tools/Ninja:$PATH

$ source ~/.bashrc

二、前置作業

1. 安裝交叉編譯

在這不挑選直接下載吧,另有需求在板上也有其他資源網址可找到

$ sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

2. 在x86上添加 arm64相關包

代码如下(示例):

ubuntu-arm64.sources 是自己創建的

$ sudo dpkg --add-architecture arm64

$ sudo vim /etc/apt/sources.list.d/ubuntu-arm64.sources

Types: deb
URIs: http://ports.ubuntu.com/ubuntu-ports/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Architectures: arm64
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg


$ sudo apt update

/*看自己缺啥包,自己安裝即可 */
$ sudo apt install libudev-dev:arm64 libmtdev-dev:arm64

3. Qt 相關作業

  • 將 /Qt/6.8.2/Src/qtbase/mkspecs 下的 linux-aarch64-gnu-g++ 複製到 devices 內,修改qmake.conf 內容。
  • 確認 Qt/6.8.2/Src/qtbase/mkspecs/devices/linux-aarch64-gnu-g++/qmake.conf 修改以下內容
#
# qmake configuration for building with aarch64-linux-gnu-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)

# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++

# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip
load(qt_config)
  • 到下載Qt路徑,為了不汙染源代碼,所以在這創建資料夾。
$ cd ./Qt/6.8.2/

$ mkdir arm64


/* 創建toolchain.cmake */
$ mkdir toolchain
$ cd ./Qt/6.8.2/toolchain
$ vim arm64-toolchain.cmake

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_C_COMPILER "/usr/bin/aarch64-linux-gnu-gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/aarch64-linux-gnu-g++")
set(CMAKE_LINKER "/usr/bin/aarch64-linux-gnu-ld")
set(CMAKE_AR "/usr/bin/aarch64-linux-gnu-ar")
set(CMAKE_FIND_ROOT_PATH /usr/aarch64-linux-gnu)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

/* 新增臨時編譯資料夾 */
$ cd ./Qt/6.8.2/
$ mkdir build && cd build
$../Src/configure \
-prefix /home/ptc/Qt/6.8.2/arm64 \
-qt-host-path /home/ptc/Qt/6.8.2/gcc_64 \
-platform linux-g++ \
-device linux-aarch64-gnu-g++ \
-device-option CROSS_COMPILE=aarch64-linux-gnu- \
-no-opengl \
-skip qtopcua -skip qtwebengine -skip qtwebview -skip qtserialport -skip qtlocation \
-no-feature-brotli -no-feature-hunspell \
-- -DCMAKE_TOOLCHAIN_FILE=$HOME/Qt/6.8.2/toolchain/arm64-toolchain.cmake 

$ cmake --build . --parallel
$ cmake --install .

4. 在編譯後Qt上也可正常使用


总结

本文介紹了如何在x86環境下交叉編譯arm64,最後在Qt 6.8.2上成功執行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值