文章目錄
- 前言
- 一、準備作業
- 二、配置
- 三、編譯安裝
- 錯誤一:
- 四、移植 Qt 到 licheepi 開發板
- 五、設定開發板 Qt 環境變數:
Qt5 移植到 licheepi zero
前言
下載地址:https://download.qt.io/archive/qt/5.9/5.9.1/single/qt-everywhere-opensource-src-5.9.1.tar.xz
wget https://download.qt.io/archive/qt/5.9/5.9.1/single/qt-everywhere-opensource-src-5.9.1.tar.xz
tar xf qt-everywhere-opensource-src-5.9.1.tar.xz #這里解壓也需要30s左右,別以為死機了,,
cd qt-everywhere-opensource-src-5.9.1
一、準備作業
確保以下軟體已安裝,
sudo apt-get install xorg-dev libfontconfig1-dev \
libfreetype6-dev libx11-dev libxcursor-dev libxext-dev \
libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
二、配置
1、 解壓源代碼 qt-everywhere-opensource-src-5.9.1.tar.gz,并進入源代碼檔案夾
tar xf qt-everywhere-opensource-src-5.9.1.tar.xz #這里解壓也需要30s左右,別以為死機了,,
cd qt-everywhere-opensource-src-5.9.1
2、指定所用平臺的 arm 架構以及交叉編譯器:
vim qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
改成以下內容,實際應需要根據自己的開發環境作出相應改變:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#
MAKEFILE_GENERATOR = UNIX
CONFIG += incremental
QMAKE_INCREMENTAL_STYLE = sublib
QT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv7-a
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv7-a
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
QMAKE_INCDIR += /opt/tslib/include
QMAKE_LIBDIR += /opt/tslib/lib
# modifications to g++.conf
QMAKE_CC = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-objcopy
QMAKE_NM = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-nm -P
QMAKE_STRIP = /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-strip
load(qt_config)
心路歷程
?就必須得詳細的說交叉編譯工具在哪里吧!
3、根據自己的實際需求配置 Qt(此處是使用 tslib 的編譯):
編輯一個檔案:vim cfg_arm.sh
#!/bin/sh
./configure \
-prefix /opt/qt5.9.1-arm \
-confirm-license \
-opensource \
-shared \
-release \
-make libs \
-xplatform linux-arm-gnueabi-g++ \
-optimized-qmake \
-pch \
-linuxfb \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-tslib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info \
-I/opt/tslib/include -L/opt/tslib/lib \
-nomake examples -nomake tools -nomake tests -no-iconv \
-tslib \
-I/opt/tslib/include \
-L/opt/tslib/lib \
-recheck-all
心路歷程
?開始配置的是 -make examples死活編譯出來,最后一個大佬提醒改成-nomake examples不管其他的,可算是編譯出來了!
三、編譯安裝
sudo make -j16
make install
安裝成功如下:
sudo make install
......
/home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -install qinstall /home/qt-everywhere-opensource-src-5.9.1/qttranslations/translations/qtxmlpatterns_pl.qm /opt/qt5.9.1-arm/translations/qtxmlpatterns_pl.qm
/home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -install qinstall /home/qt-everywhere-opensource-src-5.9.1/qttranslations/translations/qtxmlpatterns_ru.qm /opt/qt5.9.1-arm/translations/qtxmlpatterns_ru.qm
/home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -install qinstall /home/qt-everywhere-opensource-src-5.9.1/qttranslations/translations/qtxmlpatterns_sk.qm /opt/qt5.9.1-arm/translations/qtxmlpatterns_sk.qm
/home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -install qinstall /home/qt-everywhere-opensource-src-5.9.1/qttranslations/translations/qtxmlpatterns_uk.qm /opt/qt5.9.1-arm/translations/qtxmlpatterns_uk.qm
make[2]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qttranslations/translations'
make[1]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qttranslations'
cd qtdoc/ && ( test -e Makefile || /home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -o Makefile /home/qt-everywhere-opensource-src-5.9.1/qtdoc/qtdoc.pro ) && make -f Makefile install
make[1]: Entering directory '/home/qt-everywhere-opensource-src-5.9.1/qtdoc'
cd doc/ && ( test -e Makefile || /home/qt-everywhere-opensource-src-5.9.1/qtbase/bin/qmake -o Makefile /home/qt-everywhere-opensource-src-5.9.1/qtdoc/doc/doc.pro ) && make -f Makefile install
make[2]: Entering directory '/home/qt-everywhere-opensource-src-5.9.1/qtdoc/doc'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qtdoc/doc'
make[1]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qtdoc'
錯誤一:
dpaths_unix.o .obj/adler32.o .obj/compress.o .obj/crc32.o .obj/deflate.o .obj/gzclose.o .obj/gzlib.o .obj/gzread.o .obj/gzwrite.o .obj/infback.o .obj/inffast.o .obj/inflate.o .obj/inftrees.o .obj/trees.o .obj/uncompr.o .obj/zutil.o
make[3]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qtbase/src/tools/bootstrap'
make[2]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qtbase/src'
Makefile:48: recipe for target 'sub-src-make_first' failed
make[1]: *** [sub-src-make_first] Error 2
make[1]: Leaving directory '/home/qt-everywhere-opensource-src-5.9.1/qtbase'
Makefile:82: recipe for target 'module-qtbase-make_first' failed
make: *** [module-qtbase-make_first] Error 2
這個錯誤卡了好幾天,沒有法子!最后大佬提醒:
**configure 時加個 -nomake examples 引數,先不編譯examples看看能不能編譯過去
**
四、移植 Qt 到 licheepi 開發板
完成上述步驟后, qt5.9.1 將被安裝到/opt/qt5.9.1-arm 中,然后將安裝目錄/opt/qt5.9.1-arm全部復制到開發板的/opt/目錄中,將/opt/tslib中的 tslib目錄全部復制到開發板的/usr/local/中,
五、設定開發板 Qt 環境變數:
vi /etc/bash.bashrc
添加下面內容:
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/usr/local/tslib/etc/ts.conf
export TSLIB_PLUGINDIR=/usr/local/tslib/lib/ts
export TSLIB_CALIBFILE=/etc/pointercal
export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/tslib/lib:/opt/qt5.9.1-arm/lib
export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/tslib/bin
export QT_QPA_PLATFORM_PLUGIN_PATH=/opt/qt5.9.1-arm/plugins
export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
export QT_QPA_FONTDIR=/opt/qt5.9.1-arm/lib/fonts
export QT_QPA_GENERIC_PLUGINS=tslib:$TSLIB_TSDEVICE
保存退出后使上面的環境變數生效:
source /etc/bash.bashrc
在QtCreator上編譯好一個helloworld拷貝到開發板上去運行,–這里的重點就是需要配置安裝上面編譯好的目錄中的qmake否則是無法編譯成功的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287026.html
標籤:其他
