这个事情对于小白来说确实不是很友好,会经常出现错误,我弄了两天终于弄好了
我主要参考了https://blog.csdn.net/m0_61738650/article/details/131269561
https://blog.csdn.net/m0_61738650/article/details/131171914这两个教程
我现在来简述一下流程以及我在后续遇到的一些问题:
1.完成tslib源码编译
首先下载tslib库源码Tags · libts/tslib · GitHub,将源码传入Ubuntu
或者你可以直接在Ubuntu下载,然后解压:
tar xvf 压缩包
安装需要的配件
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
./configure --host=arm-linux-gnueabihf(工具链) ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=放置tslib的地方(我的是/home/book/qtstudy/tslib-arm)
make
make install
使用configure进行配置,然后make,makeinstall,这里host指定工具链,然后在你指定的路径会生成bin etc include lib share五个文件夹,这里就成功了
2.下载并编译qt源码
qt安装包和qt的源码下载是非常非常慢的,这里我推荐离线安装,因为我使用镜像安装总是提示我缺少某某文件。
网站:Index of /archive/qt/5.15/5.15.2/single
这里qt-everywhere-src-5.15.2.tar.xz是我们需要下载的,我们使用迅雷下载会比较快,我们右键点击需要下载的文件,复制链接,然后打开迅雷在搜索框中粘贴连接,如果弹出下载框即代表可以下载。
再解压
tar -xvf qt-everywhere-src-5.15.2.tar.xz
修改qt-everywhere-src-5.15.2文件下qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf将其修改为如下内容:
其中arm-linux-gnueabihf-gcc arm-linux-gnueabihf-g++是编译工具链,使用之前先查看有没有,在终端输入arm-linux然后按tab补齐看有没有,没的话需要安装
#
# 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 += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
QMAKE_CXXFLAGS += -O2 -march=armv7-a -mtune=cortex-a7 -mfpu=neon -mfloat-abi=hard
include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)
# modifications to g++.conf
QMAKE_CC = arm-linux-gnueabihf-gcc
QMAKE_CXX = arm-linux-gnueabihf-g++
QMAKE_LINK = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_NM = arm-linux-gnueabihf-nm -P
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
下面我们需要对configure文件进行配置,输入./configure -help可以看到我们需要配置的项,tslib需要配置的很少因此我们可以直接在后面输入配置内容,但是这个需要配置的很多,因此我们写了一个脚本文件来配置
我们在qt-everywhere-src-5.15.2文件夹下创建并写入vim autoconfigure.sh
其中第一行是输出配置文件的路径
倒数第二行和倒数第三行分别为我们刚才编译生成tslib的lib 和include文件夹
./configure -prefix /home/book/qtstudy/qt-everywhere-src-5.15.2/arm-qt \
-opensource \
-confirm-license \
-release \
-strip \
-shared \
-xplatform linux-arm-gnueabi-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 \
-tslib \
--libpng=qt \
--libjpeg=qt \
--sqlite=qt \
-plugin-sql-sqlite \
-I/home/book/qtstudy/tslib-arm/include \
-L/home/book/qtstudy/tslib-arm/lib \
-recheck-all
下面我们需要把文件设置为可执行文件,并运行
chmod +x autoconfigure.sh
./autoconfigure.sh
这时候我们就等配置完成即可
我在配置的时候遇到的问题:
tslib问题,大概意思就是tslib已生成但是有什么什么错误来着
最后的解决方法就是重新按照上述流程编译tslib,之前有编译过的也重新编译一下
后面分别执行make makeinstall即可(同理出问题的话可以make distclean可以删除make文件生成东西和configure配置的东西,重新来即可,当然也可以直接把这个文件夹删掉重新解压缩)
3.安装linux中的qt
和上述配置qt源码一样,我们只需要复制qt下载链接后去迅雷下载就会很快
同理使用chmod将qt文件设置为可执行文件,并运行(我下载的是qt-opensource-linux-x64-5.12.8.run,下载链接在Index of /archive/qt/5.12/5.12.8),安装的时候如果断网可以跳过登录,当然如果你注册了qt账号(免费注册很简单)可以联网安装,只需要登录一下qt账户,下面安装时候我只添加选择了desktop gcc -64也就是第一个选项,这个和gcc编译器相关,其他的可以都不添加选择。
chmod +x qt下载文件
./qt下载文件
安装成功后在启动qt'软件在上面tools options中进行配置,选择kits,对debuggers进行添加,我的路径如下(如果是百问网的imx6ull应该是一样的)manual里面两个都一样只是起了不一样的名字,配置一个即可
QT versions中add,选择我们刚才配置文件configure选择的输出文件夹里面的qmake
最后我们add一个kit,将配置项选为我们刚才配置的选项
编译器直接选择自动的这个arm 32bit,但是我在上述教程中看到的编译器配置的是debuggers一样的工具链,但是这样做我会报错(某个库的形式错误),我不知道为什么,但是确实使用这个自动的编译器就可以用。
保存,下面去项目中:取消勾选默认的kit的shadow build,然后选择我们自己的kit
选择我们的kit进行运行(需要打开板子)
4.配置字体
上述如果成功的话你会发现板子上任何文字都不会显示,是因为我们没用设置字库文件,我们需要去设置环境变量告诉板子我们用的是那个字库,这时候我们制定了字体文件夹,我们只需要任意去网上下载一个ttf'文件放在这个文件夹内即可,(一定要是这个文件夹里面)
export QT_QPA_FONTDIR=/usr/share/fonts
最后我们就可以成功运行
有任何问题欢迎评论区交流!