Ubuntu 搭建qt arm64编译环境

1,292 阅读1分钟

下载gcc-linaro-6.3.1

releases.linaro.org/components/…

64位平台的编译器../gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz操作如下

  923  tar -xvf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz 
  924  mv gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu aarch64-linux-gnu-6.3.1
  925  sudo cp -rf aarch64-linux-gnu-6.3.1/ /opt

vim /etc/bash.bashrc

PATH=$PATH:/opt/aarch64-linux-gnu-6.3.1/bin

source /etc/bash.bashrc

下载qt-src-5.12.9

download.qt.io/archive/qt/…

tar xvf qt-everywhere-src-5.12.9.tar.xz
sudo mkdir /opt/qt-5.12.9-arm64
cd qt-everywhere-src-5.12.9
subl qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf

修改qmake.conf

#
# qmake configuration for building with aarch64-linux-gnu-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts

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

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

# modifications to linux.conf
QMAKE_AR                = /opt/aarch64-linux-gnu-6.3.1/bin/aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = /opt/aarch64-linux-gnu-6.3.1/bin/aarch64-linux-gnu-objcopy
QMAKE_NM                = /opt/aarch64-linux-gnu-6.3.1/bin/aarch64-linux-gnu-nm -P
QMAKE_STRIP             = /opt/aarch64-linux-gnu-6.3.1/bin/aarch64-linux-gnu-strip
load(qt_config)

创建configure脚本

subl arm64_autoconfig.sh

./configure -prefix /opt/qt-5.12.9-arm64/ \
	-opensource -confirm-license \
	-release \
	-strip \
	-shared \
	-xplatform linux-aarch64-gnu-g++ \
	-optimized-qmake \
	-c++std c++11 \
	--rpath=no \
	-pch \
	-skip qt3d \
	-skip qtactiveqt \
	-skip qtandroidextras \
	-skip qtcanvas3d \
	-skip qtconnectivity \
	-skip qtdatavis3d \
	-skip qtdoc \
	-skip qtgamepad \
	-skip qtlocation \
	-skip qtmacextras \
	-skip qtnetworkauth \
	-skip qtpurchasing \
	-skip qtremoteobjects \
	-skip qtscript \
	-skip qtscxml \
	-skip qtsensors \
	-skip qtspeech \
	-skip qtsvg \
	-skip qttools \
	-skip qttranslations \
	-skip qtwayland \
	-skip qtwebengine \
	-skip qtwebview \
	-skip qtwinextras \
	-skip qtx11extras \
	-skip qtxmlpatterns \
	-make libs \
	-make examples \
	-nomake tools -nomake tests \
	-gui \
	-widgets \
	-dbus-runtime \
	--glib=no \
	--iconv=no \
	--pcre=qt \
	--zlib=qt \
	-no-openssl \
	--freetype=qt \
	--harfbuzz=qt \
	-no-opengl \
	-linuxfb \
	--xcb=no \
	--libpng=qt \
	--libjpeg=qt \
	--sqlite=qt \
	-plugin-sql-sqlite \
	-recheck-all

chmod +x arm64_autoconfig.sh

time(make -j4)

readelf -h /opt/qt-5.12.9-arm64/lib/libQt5Xml.so
file /opt/qt-5.12.9-arm64/examples/widgets/animation/animatedtiles/animatedtiles

sudo make install

ls /opt/qt-5.12.9-arm64/

cd /opt/qt-5.12.9-arm64/

sudo tar -jcf arm64-qt5.12.9.tar.bz2 qt-5.12.9-arm64

qt creator

image.png

image.png

image.png

image.png

image.png

image.png

image.png

拷贝可执行程序至开发板

scp -p your_qt_demo user@your_ip:.

image.png