正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码

简介: 正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码

交叉编译器下载

下载链接:https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/

我们将交叉编译器安装到下面这个目录

sudo mkdir /usr/local/arm

然后将文件解压到该目录

sudo tar xf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz -C /usr/local/arm/

配置环境变量

sudo vi /etc/profile 

在末尾添加如下所示内容

export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin

安装必要库文件

sudo apt-get install lsb-core lib32stdc++6 

验证是否安装生效:如果出现版本信息表示配置安装完成

arm-linux-gnueabihf-gcc -v

Tslib下载

下载链接:https://codechina.csdn.net/mirrors/kergoth/tslib?utm_source=csdn_gith
ub_accelerator

解压

tar xf tslib-1.21.tar.bz2

进入文件夹

cd tslib-1.21 

安装扩展库

sudo apt-get install autoconf automake libtool pkg-config

生成makefile

./autogen.sh

这里应该打印的信息为

这里需要注意的是这一行代码不能有多余的空格和换行非常严格;

这个是这句代码的结构

./configure --host=交叉编译器 ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=当前目录/arm-tslib

这里是我执行的代码表示使用arm-linux-gnueabihf编译器编译库到/home/stylle/arm/QT/tslib-1.21/arm-tslib这个目录中去

./configure --host=arm-linux-gnueabihf ac_cv_func_malloc_0_nonnull=yes --cache-file=arm-linux.cache -prefix=/home/stylle/arm/QT/tslib-1.21/arm-tslib

开始编译

Make
Make install

验证是否编译完成

首先检查是否生成了arm-tslib文件夹

然后使用file指令检查文件(arm-tslib/bin/ts_calibrate)是否为arm格式

如果编译出来的是不是arm文件,需要make clean清除一下编译过的文件,再使用rm -r arm-tslib将刚生成的错误文件删除掉,最后重新执行这一小节的编译指令。

qt源文件下载

下载链接:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.12/5.12.9/single/

Tar.gz格式的文件

解压

tar xf qt-everywhere-src-5.12.9.tar.xz 

进入解压的目录

cd qt-everywhere-src-5.12.9/

编写两个编译文件:需要注意的是qmake文件是本身就存在的只是需要修改,而autocongiure.sh文件是需要手动创建的

Qmake.conf文件在qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf所以我们编辑他需要执行

vi qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf

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 += -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)

然后是./autoconfigure.sh文件

./configure -prefix ./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/stylle/arm/QT/tslib-1.21/arm-tslib/include \
-L/home/stylle/arm/QT/tslib-1.21/arm-tslib/lib \
-recheck-all

(1) ./arm-qt 为编译输出路径,这里表示输出到编译目录下的arm-qt文件夹中。

(2) /home/stylle/arm/QT/tslib-1.21/arm-tslib/include 为tslib 头文件路径。

(3) /home/stylle/arm/QT/tslib-1.21/arm-tslib/lib 为第tslib 相关库文件路径。

然后我们执行脚本

chmod +x autoconfigure.sh  # 添加执行权限
./autoconfigure.sh

然后开始编译(这里的时间比较长大概需要十几分钟)

time (make -j 16) // -j 16 代表最多允许 16 条编译指令同时运行,参数 16,一般为 
个人分配给虚拟机的核心数的 2 倍,前面加个 time 是测试编译时间。

然后执行安装查看编译好的目录

make install 
ls arm-qt

配置 ARM 平台的 Qt Creator Kits

第一步添加QT Version

这里选择我们刚刚编译的arm-qt/bin路径下的qmake文件

第二步配置编译器

这里的路径为我们前面安装的交叉编译器的路径

第三步添加我们的kits

然后我们新建一个项目来验证是否成功,在创建项目的时候记得要勾选我们创建的kit

然后我们点击右下角,如果出现这个选项表示成功,右击项目,点击构建,然后相应的在项目编译目录下会生成一个.file的文件,这就是在我们板子上运行的文件,拷贝到板子上我们就可以开始运行我们的软件了

验证生成的文件是否为arm架构

我们拷贝到板子上运行

这里我使用U盘挂载的方式来运行测试

mount /dev/sda1 /mnt
Cd mnt
./frist-armqt

然后我们就可以看到我们开发板屏幕上显示我们刚刚编译的窗口了,这里建议小伙伴们放几个控件可以更好的看到效果,这里需要注意的是我并没有将编译好的源码移植到板子上,这里只是做一个编译的过程,我的板子本身是使用的正点原子出厂系统。

总结

1、编译脚本的几个地方都非常容易出错,多一个空格都会出错,其中的路径也是非常重要的在脚本的地方我也写上了相应的注释供大家参考

2、编译完成输出的脚本不能随便移动位置,因为在他编译的过程中会将路径信息写入到编译文件中,我就是因为在桌面编译好源码过后在设置qt kits的时候开始报错(QT版本未正确安装,请运行make install(QT version is not properly installed, please run make install))

相关文章
|
10月前
|
存储 网络协议 网络安全
【Azure 环境】部署ARM Linked Template时候 Blob SAS Token不能正常工作
Unable to retrieve url https://<stroage account name>.blob.core.chinacloudapi.cn/arm/azuredeploy.json?sp=r 'st' is not recognized as an internal or external command, operable program or batch file. 'se' is not recognized as an internal or external command, operable program or batch file. 'spr' is no
165 1
|
Unix 网络虚拟化 C++
VS2022+Qt5.14.2成功编译MITK2022.10
使用VS2022和Qt5.14.2成功编译MITK2022.10的过程,包括编译结果的截图、遇到的编译问题的解决方法、两个重要的注意事项(patch文件格式的修改和ITK-gitclone-lastrun文件的存在),以及参考链接。文中详细描述了如何解决编译过程中遇到的错误C2220和警告C4819,以及如何修改文件编码和尾行格式。
938 1
VS2022+Qt5.14.2成功编译MITK2022.10
编译QCefView+VS2019+QT5.15.2
本文介绍了如何编译QCefView项目,并在VS2019和Qt 5.15.2环境下集成,包括编译结果、要点、cmake部署Qt的方法和相关参考链接。
894 2
编译QCefView+VS2019+QT5.15.2
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
本文介绍了如何编译整合VTK 9.2、DICOM 0.8、DCMTK 3.6.7和Qt 6.2的步骤,包括安装Qt、CMake配置以及确认相关路径和版本设置。
400 1
vtkdicom0.8_vtk9.2_dcmtk3.6.7_qt6.2编译OK
|
Ubuntu Shell API
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
|
人工智能 C++
初步编译QT5.15.2+VS2019+VTK8.2.0
本文介绍了在VS2019中编译QT 5.15.2和VTK 8.2.0的过程,包括编译结果、cmake库编译配置和cmake应用配置脚本,以及推荐的参考链接。
669 4
|
计算机视觉
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
这篇文章记录了使用VS2019编译Qt6.2.4、DCMTK3.6.7、VTK9.2.2、ITK5.3和OpenCV4.6.0的过程,包括下载和编译步骤,并提供了遇到编译错误时的解决方案和参考链接。
375 0
vs2019_qt6.2.4_dcmtk3.6.7_vtk9.2.2_itk5.3_opencv4.6.0编译记录
|
C语言 C++ Windows
QT多插件通信框架CTK编译记录
本文记录了编译QT多插件通信框架CTK的过程,包括编译结果截图、部署配置、Log4Qt编译配置、参考链接和拓展资料。文中提供了详细的编译步骤和配置文件示例,以及相关的资源链接。
625 0
QT多插件通信框架CTK编译记录
|
机器学习/深度学习 Java 计算机视觉
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录
本文记录了使用mingw81_64编译OpenCV 4.5.5、Qt 5.15.2、VTK 9.1的详细过程,包括编译结果截图、编译步骤、遇到的问题及其解决方案,以及相关参考链接。文中还提到了如何编译boost源码为静态库,并提供了测试代码示例。
637 0
opencv4.5.5+qt5.15.2+vtk9.1+mingw81_64编译记录

推荐镜像

更多
  • qt