电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
【野火i.MX6ULL ARM Linux开发板连载】QT环境搭建(一)
分 享
扫描二维码分享
【野火i.MX6ULL ARM Linux开发板连载】QT环境搭建(一)
linux,
i.MX6ULL
QT5
瑟寒凌风
关注
发布时间: 2021-03-02
丨
阅读: 664
本文中使用的系统ubuntu18.04 将如下内容保存为build-gcc.sh文件: ```bash #!/bin/sh HOST=arm-linux-gnueabihf SCRIPT_PATH=$(pwd) #修改源码包解压后的名称 MAJOR_NAME=gcc-arm-linux-gnueabihf #修改需要下载的源码版本前缀和后缀 OPENSRC_VER_PREFIX=8.3 OPENSRC_VER_SUFFIX=.0 PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX} #定义压缩包名称 COMPRESS_PACKAGE=gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.xz #定义编译后安装--生成的文件,文件夹位置路径 INSTALL_PATH=/opt/${PACKAGE_NAME} #无需修改--下载地址 DOWNLOAD_LINK=https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/${COMPRESS_PACKAGE} #下载源码包 do_download_src () { echo "\033[1;33mstart download ${COMPRESS_PACKAGE}...\033[0m" if [ ! -f "${COMPRESS_PACKAGE}" ];then if [ ! -d "${PACKAGE_NAME}" ];then wget -c ${DOWNLOAD_LINK} fi fi echo "\033[1;33mdone...\033[0m" } #解压源码包 do_tar_package () { echo "\033[1;33mstart unpacking the ${PACKAGE_NAME} package ...\033[0m" mkdir -p ${INSTALL_PATH} if [ ! -d "${PACKAGE_NAME}" ];then tar -xf ${COMPRESS_PACKAGE} -C ${INSTALL_PATH} --strip-components=1 fi echo "\033[1;33mdone...\033[0m" } #删除下载的文件 do_delete_file () { cd ${SCRIPT_PATH} if [ -f "${PACKAGE_NAME}" ];then sudo rm -f ${PACKAGE_NAME} fi } do_download_src do_tar_package # do_delete_file exit $? ``` 然后通过命令 ```bash sudo chmod 777 build-gcc.sh ``` 给该文件赋予权限,执行 ```bash sudo ./ build-gcc.sh ``` 可以安装交叉编译工具,该交叉编译工具安装时间比较久,我这个大概等了2小时。 ![](https://cf03.ickimg.com/bbsimages/202103/7d6e627b35d02cdbec17d73cb2a49163.jpg) 使用如下命令查看安装好的编译器 ```bash arm-linux-gnueabihf-gcc –v ``` ![](https://cf03.ickimg.com/bbsimages/202103/c70845e838e8cfd8e5f803480c1b8c6b.jpg) 下面安装触摸屏驱动,这个触摸屏驱动可以装也可以不装,如果不装,接上触摸屏后不能使用触摸功能,但是可以通过鼠标键盘来操作屏幕,相当于一个电脑.如果装上这个驱动,可以实现手机的操作方式,很方便。 tslib能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口,触摸屏的坐标和液晶显示屏之间的坐标并不是一一对应的,要让从触摸屏上得到的坐标正确转换为液晶显示屏上的坐标,需要经过一个转换过程,而tslib就是完成这个功能的。 新建build-tslib.sh文件,如下图所示 ![](https://cf03.ickimg.com/bbsimages/202103/69973b55ac21c6f75ccb959b873648a3.jpg) 为了安装该驱动库,我们需要做如下操作 下载tslib源码→解压tslib源码→配置tslib源码→编译并安装tslib 在新建的build-tslib.sh中粘贴如下内容到该文件 ```bash #!/bin/sh # set -v HOST=arm-linux-gnueabihf SCRIPT_PATH=$(pwd) #添加交叉编译工具链路径 # CROSS_CHAIN_PREFIX=/opt/arm-gcc/bin/arm-linux-gnueabihf CROSS_CHAIN_PREFIX=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf #修改源码包解压后的名称 MAJOR_NAME=tslib #修改需要下载的源码前缀和后缀 OPENSRC_VER_PREFIX=1 OPENSRC_VER_SUFFIX=.21 PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX} #定义压缩包名称 COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.bz2 #定义编译后安装--生成的文件,文件夹位置路径 INSTALL_PATH=/opt/${PACKAGE_NAME} #无需修改--下载地址 DOWNLOAD_LINK=https://github.com/libts/${MAJOR_NAME}/releases/download/${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX}/${COMPRESS_PACKAGE} #下载源码包 do_download_src () { echo "\033[1;33mstart download ${PACKAGE_NAME}...\033[0m" if [ ! -f "${COMPRESS_PACKAGE}" ];then if [ ! -d "${PACKAGE_NAME}" ];then wget -c ${DOWNLOAD_LINK} fi fi echo "\033[1;33mdone...\033[0m" } #解压源码包 do_tar_package () { echo "\033[1;33mstart unpacking the ${PACKAGE_NAME} package ...\033[0m" if [ ! -d "${PACKAGE_NAME}" ];then tar -xf ${COMPRESS_PACKAGE} fi echo "\033[1;33mdone...\033[0m" cd ${PACKAGE_NAME} } #配置选项 do_configure () { echo "\033[1;33mstart configure ${PACKAGE_NAME}...\033[0m" export CC=${CROSS_CHAIN_PREFIX}-gcc ./configure \ --prefix=${INSTALL_PATH} \ --host=${HOST} \ echo "\033[1;33mdone...\033[0m" } #编译并且安装 do_make_install () { echo "\033[1;33mstart make and install ${PACKAGE_NAME} ...\033[0m" make && make install echo "\033[1;33mdone...\033[0m" } #删除下载的文件 do_delete_file () { cd ${SCRIPT_PATH} if [ -f "${PACKAGE_NAME}" ];then sudo rm -f ${PACKAGE_NAME} fi } do_download_src do_tar_package do_configure do_make_install # do_delete_file exit $? ``` 我的操作截图如下 ![](https://cf03.ickimg.com/bbsimages/202103/ac997ea5cb922b74f84283dac2eb5c11.jpg) 从野火的官方得知,此处tslib驱动的版本比较新,因为使用其他低版本的可能出现一些警告或者错误。 使用如下命令让build-tslib.sh文件赋予执行权限,我给权限都是777,有人说这不是一个好习惯,谁叫我是男的呢,男人都是大猪蹄子。 ```bash sudo chmod 777 build-tslib.h ``` 执行时运行如下命令 ```bash sudo ./build-tslib.sh ``` ![](https://cf03.ickimg.com/bbsimages/202103/a17853766e72931b7105516956014634.jpg) 然后交叉编译声卡驱动模组. 这个驱动是为了在编译qt应用时,加入声卡驱动,可以驱动开发板发出声音. 使用一键配置文件,在电脑虚拟机中新建build-alsa.sh文件,复制如下内容到该文件中 ```bash #!/bin/sh HOST=arm-linux-gnueabihf SCRIPT_PATH=$(pwd) #修改源码包解压后的名称 MAJOR_NAME=alsa-lib #修改需要下载的源码前缀和后缀 OPENSRC_VER_PREFIX=1.2 OPENSRC_VER_SUFFIX=.2 PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX} #定义压缩包名称 COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.bz2 #定义编译后安装--生成的文件,文件夹位置路径 INSTALL_PATH=/opt/${PACKAGE_NAME} #添加交叉编译工具链路径 # CROSS_CHAIN_PREFIX=/opt/arm-gcc/bin/arm-linux-gnueabihf CROSS_CHAIN_PREFIX=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf #无需修改--下载地址 DOWNLOAD_LINK=ftp://ftp.alsa-project.org/pub/lib/${COMPRESS_PACKAGE} #下载源码包 do_download_src () { echo "\033[1;33mstart download ${PACKAGE_NAME}...\033[0m" if [ ! -f "${COMPRESS_PACKAGE}" ];then if [ ! -d "${PACKAGE_NAME}" ];then wget -c ${DOWNLOAD_LINK} fi fi echo "\033[1;33mdone...\033[0m" } #解压源码包 do_tar_package () { echo "\033[1;33mstart unpacking the ${PACKAGE_NAME} package ...\033[0m" if [ ! -d "${PACKAGE_NAME}" ];then tar -xf ${COMPRESS_PACKAGE} fi echo "\033[1;33mdone...\033[0m" cd ${PACKAGE_NAME} } #配置选项 do_configure () { echo "\033[1;33mstart configure ${PACKAGE_NAME}...\033[0m" mkdir -p ${INSTALL_PATH}/config mkdir -p ${INSTALL_PATH}/plugin export CC=${CROSS_CHAIN_PREFIX}-gcc ./configure \ --prefix=${INSTALL_PATH} \ --host=${HOST} \ # --enable-static \ --enable-shared \ --disable-python \ --with-configdir=${INSTALL_PATH}/config \ --with-plugindir=${INSTALL_PATH}/plugin echo "\033[1;33mdone...\033[0m" } #编译并且安装 do_make_install () { echo "\033[1;33mstart make and install ${PACKAGE_NAME} ...\033[0m" make && make install echo "\033[1;33mdone...\033[0m" } #删除下载的文件 do_delete_file () { cd ${SCRIPT_PATH} if [ -f "${PACKAGE_NAME}" ];then sudo rm -f ${PACKAGE_NAME} fi } do_download_src do_tar_package do_configure do_make_install # do_delete_file exit $? ``` 在运行之前,也要使用命令赋予权限 ```bash sudo chmod 777 build-alsa.sh ``` ![](https://cf03.ickimg.com/bbsimages/202103/3eb150433d8dab63e5523c7802ac4602.jpg) 编译qt 本文选择的qt与官网的qt保持一致,使用qt5.11.3版本,下载链接如下 ```bash https://download.qt.io/new_archive/qt/5.11/5.11.3/ ``` 我这里使用一键配置脚本,方便环境的配置. 新建build-qt.sh文件,粘贴如下内容到文件 ```bash #!/bin/sh # set -v PLATFORM=my-linux-arm-qt SCRIPT_PATH=$(pwd) #修改源码包解压后的名称 MAJOR_NAME=qt-everywhere-src #修改需要下载的源码前缀和后缀 OPENSRC_VER_PREFIX=5.11 OPENSRC_VER_SUFFIX=.3 #添加tslib交叉编译的动态库文件和头文件路径 TSLIB_LIB=/opt/tslib-1.21/lib TSLIB_INC=/opt/tslib-1.21/include #添加alsa交叉编译的动态库文件和头文件路径 ALSA_LIB=/opt/alsa-lib-1.2.2/lib ALSA_INC=/opt/alsa-lib-1.2.2/include #修改源码包解压后的名称 PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX} #定义编译后安装--生成的文件,文件夹位置路径 INSTALL_PATH=/opt/${PACKAGE_NAME} #添加交叉编译工具链路径 # CROSS_CHAIN_PREFIX=/opt/arm-gcc/bin/arm-linux-gnueabihf CROSS_CHAIN_PREFIX=/opt/gcc-arm-linux-gnueabihf-8.3.0/bin/arm-linux-gnueabihf #定义压缩包名称 COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.xz #无需修改--自动组合下载地址 OPENSRC_VER=${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX} case ${OPENSRC_VER_PREFIX} in 5.9 | 5.12 | 5.13 | 5.14 |5.15 ) DOWNLOAD_LINK=http://download.qt.io/official_releases/qt/${OPENSRC_VER_PREFIX}/${OPENSRC_VER}/single/${COMPRESS_PACKAGE} ;; *) DOWNLOAD_LINK=http://download.qt.io/new_archive/qt/${OPENSRC_VER_PREFIX}/${OPENSRC_VER}/single/${COMPRESS_PACKAGE} ;; esac #无需修改--自动组合平台路径 CONFIG_PATH=${SCRIPT_PATH}/${PACKAGE_NAME}/qtbase/mkspecs/${PLATFORM} #无需修改--自动组合配置平台路径文件 CONFIG_FILE=${CONFIG_PATH}/qmake.conf #下载源码包 do_download_src () { echo "\033[1;33mstart download ${PACKAGE_NAME}...\033[0m" if [ ! -f "${COMPRESS_PACKAGE}" ];then if [ ! -d "${PACKAGE_NAME}" ];then wget -c ${DOWNLOAD_LINK} fi fi echo "\033[1;33mdone...\033[0m" } #解压源码包 do_tar_package () { echo "\033[1;33mstart unpacking the ${PACKAGE_NAME} package ...\033[0m" if [ ! -d "${PACKAGE_NAME}" ];then tar -xf ${COMPRESS_PACKAGE} fi echo "\033[1;33mdone...\033[0m" cd ${PACKAGE_NAME} # 修复5.11.3 版本的bug if [ ${OPENSRC_VER_PREFIX}=="5.11" -a ${OPENSRC_VER_SUFFIX}==".3" ]; then sed 's/asm volatile /asm /' -i qtscript/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp fi } #安装依赖项 do_install_config_dependent () { sudo apt install python -y sudo apt install g++ make qt3d5-dev-tools -y sudo apt install qml-module-qtquick-xmllistmodel -y sudo apt install qml-module-qtquick-virtualkeyboard qml-module-qtquick-privatewidgets qml-module-qtquick-dialogs qml -y sudo apt install libqt53dquickscene2d5 libqt53dquickrender5 libqt53dquickinput5 libqt53dquickextras5 libqt53dquickanimation5 libqt53dquick5 -y sudo apt install qtdeclarative5-dev qml-module-qtwebengine qml-module-qtwebchannel qml-module-qtmultimedia qml-module-qtaudioengine -y } #修改配置平台 do_config_before () { echo "\033[1;33mstart configure platform...\033[0m" if [ ! -d "${CONFIG_PATH}" ];then cp -a ${SCRIPT_PATH}/${PACKAGE_NAME}/qtbase/mkspecs/linux-arm-gnueabi-g++ ${CONFIG_PATH} fi echo "#" > ${CONFIG_FILE} echo "# qmake configuration for building with arm-linux-gnueabi-g++" >> ${CONFIG_FILE} echo "#" >> ${CONFIG_FILE} echo "" >> ${CONFIG_FILE} echo "MAKEFILE_GENERATOR=UNIX" >> ${CONFIG_FILE} echo "CONFIG +=incremental" >> ${CONFIG_FILE} echo "QMAKE_INCREMENTAL_STYLE=sublib" >> ${CONFIG_FILE} echo "" >> ${CONFIG_FILE} echo "include(../common/linux.conf)" >> ${CONFIG_FILE} echo "include(../common/gcc-base-unix.conf)" >> ${CONFIG_FILE} echo "include(../common/g++-unix.conf)" >> ${CONFIG_FILE} echo "" >> ${CONFIG_FILE} echo "# modifications to g++.conf" >> ${CONFIG_FILE} echo "QMAKE_CC=${CROSS_CHAIN_PREFIX}-gcc -lts" >> ${CONFIG_FILE} echo "QMAKE_CXX=${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE} echo "QMAKE_LINK=${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE} echo "QMAKE_LINK_SHLIB=${CROSS_CHAIN_PREFIX}-g++ -lts" >> ${CONFIG_FILE} echo "" >> ${CONFIG_FILE} echo "# modifications to linux.conf" >> ${CONFIG_FILE} echo "QMAKE_AR=${CROSS_CHAIN_PREFIX}-ar cqs" >> ${CONFIG_FILE} echo "QMAKE_OBJCOPY=${CROSS_CHAIN_PREFIX}-objcopy" >> ${CONFIG_FILE} echo "QMAKE_NM=${CROSS_CHAIN_PREFIX}-nm -P" >> ${CONFIG_FILE} echo "QMAKE_STRIP=${CROSS_CHAIN_PREFIX}-strip" >> ${CONFIG_FILE} echo "load(qt_config)" >> ${CONFIG_FILE} echo "" >> ${CONFIG_FILE} echo "QMAKE_INCDIR=${TSLIB_INC}" >> ${CONFIG_FILE} echo "QMAKE_LIBDIR=${TSLIB_LIB}" >> ${CONFIG_FILE} cat ${CONFIG_FILE} echo "\033[1;33mdone...\033[0m" } #配置选项 do_configure () { echo "\033[1;33mstart configure ${PACKAGE_NAME}...\033[0m" export CC="${CROSS_CHAIN_PREFIX}-gcc" export CXX="${CROSS_CHAIN_PREFIX}-g++" ./configure \ -prefix ${INSTALL_PATH} \ -xplatform ${PLATFORM} \ -release \ -opensource \ -confirm-license \ -no-openssl \ -no-opengl \ -no-xcb \ -no-eglfs \ -no-compile-examples \ -no-pkg-config \ -no-iconv \ -no-glib \ -tslib \ -I"${TSLIB_INC}" \ -L"${TSLIB_LIB}" \ -alsa \ -I"${ALSA_INC}" \ -L"${ALSA_LIB}" \ echo "\033[1;33mdone...\033[0m" } #编译并且安装 do_make_install () { echo "\033[1;33mstart make and install ${PACKAGE_NAME} ...\033[0m" make && make install echo "\033[1;33mdone...\033[0m" } #删除下载的文件 do_delete_file () { cd ${SCRIPT_PATH} if [ -f "${COMPRESS_PACKAGE}" ];then sudo rm -f ${COMPRESS_PACKAGE} fi } do_download_src do_tar_package do_install_config_dependent do_config_before do_configure do_make_install # do_delete_file exit $? ``` ![](https://cf03.ickimg.com/bbsimages/202103/77229c30e2d3c5c6aa7f0aee3366b9e1.jpg) 使用命令赋予权限 sudo chmod 777 build-qt.sh 说是方便快捷,实际上慢得掉渣。。。 。。。 这里等得太久,下一篇再来qt吧,bye。。。
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
瑟寒凌风
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交