Linux下Qt学习笔记

257 阅读3分钟

Qt学习

Qt交叉编译环境搭建

安装交叉编译工具链

  • fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh(yocto 编译出来的 sdk 工具包)拷贝到 Ubuntu 虚拟机

  • 修改权限

    chmod u+x fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

  • 直接执行脚本(默认安装到/opt/fsl-imx-x11/4.1.15-2.1.0 这个默认目录 )

    ./fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh

安装Qt

  • sudo apt-get install build-essential libgl1-mesa-dev
  • Qt下载地址
  • 下载对应安装包qt-linux-opensource-5.1.0-x86_64-offline.run
  • 传给Ubuntu
  • 给予权限 chmod +x qt-linux-opensource-5.1.0-x86_64-offline.run
  • 执行安装指令,安装到默认位置 sudo ./qt-linux-opensource-5.1.0-x86_64-offline.run

卸载Qt

  • 进入安装目录
  • sudo ./MaintenanceTool

移植到imx6ull开发板上

  • 需要用到正点原子官方的设备树和镜像文件,但是用他们的源文件编译完成之后却找不到对应的设备树文件,艹,明天看看咋回事
  • 出厂系统文件:alientek-linux.coding.net/public/imx6…
  • uboot用的自己的,zImage和设备树文件用的正点原子的,还有文件系统
  • 在Qt中安装一个ARM的编译器(就是选择之前安装的交叉编译环境的的编译器,包括qmake、gdb和g++编译器)

rpm安装包相关操作

  • 安装rpm安装包

    rpm -ivh rpm_name

    参数解释:
    ​
    -i(install):安装软件包。
    -v(verbose):显示安装的过程信息。可视化。
    -h(hash):软件安装的时候列出哈希标记。即显示安装进度。
    另外在安装一个rpm包时常用的附带参数有:
    ​
    --force : 强制安装,即使覆盖属于其他包的文件也要安装--nodeps : 当要安装的rpm包依赖其他包时,即使其他包没有安装,也要安装这个包
    
  • 卸载rpm安装包

    rpm -e filename

    -e(erase擦去,抹去,除掉):清除,卸载软件包。
    卸载时后边跟的filename和安装时的是有区别的,安装时是把一个存在的文件作为参数,而卸载时只需要包名即可。
    
  • 查看一个安装的包的相关信息

    rpm -qi 包名

    • -i(info):列出软件包的详细信息。rpm -q --info ibus
  • 升级一个rpm包

    rpm -Uvh filename

    • -U(upgrade):升级软件包。
    • -v,-h:同上,显示安装过程。
  • 查询一个包是否安装

    rpm -q rpm包名

  • 列出rpm包安装的文件

    rpm -ql 包名

    -l(list):列出软件包中的文件。

    -s(state):显示列出文件的状态。

遇到的问题

  • 打开Qt时提示无权限更改.config文件,提示 [QTCreator出现提示无法覆盖文件 /home/xxx/.config/QtProject/Qtcreator/qtversion.xml : Permission denied的错误](https://www.cnblogs.com/Rainingday/p/13841572.html)

    执行指令

    sudo chown -R lux:lux ~/.config/

  • Qt第一次编译报错

    cannot find lGL

    执行sudo apt-get install build-essential libgl1-mesa-dev

  • 执行解决 cannot find -lGL

    sudo apt-install libqt4-dev

  • 执行报错 error while loading shared libraries: libQt5WebKitWidgets.so.5: cannot open shared object file: No such file or directory

    执行sudo apt-get install libqt5widgets5

发布Qt的工程

  1. 将Qt工程中的Debug模式调整为Release模式,运行一次工程文件
  2. 找到工程文件下生成的Release的文件夹
  3. 在Win10搜索框中搜索Qt,打开Qt 5.14.2 (MinGW 7.3.0 32-bit)
  4. 在命令窗口中进入生成的EXE文件目录下
  5. 执行windeployqt name.exe打包所需要的的库文件即可

开发进度

20211128

  1. QClock可以编译,通过命令行编译

    • qmake
    • make
    • make distclean
  2. 可以移植到开发板运行,但是运行会显示正点原子官方的UI背景

  3. u-boot启动Linux不会自动加载

  4. QWeb不能运行

  5. 自己写的Qt程序如果直接选择ARM编译器会报错,就可以程序编辑好,用命令行编译

  6. 自己写的Qt程序也会被正点原子官方的UI给覆盖掉,可能是官方的UI是后台运行,想办法找出来PID,然后kill掉

20211205

  1. 不能自动加载内核可能是因为boot移植的有问题,现在配置好bootcmd直接运行run bootcmd 运行正常
  2. 覆盖的问题还没找到解决的原因
  3. 现在qmake编译之前还要先运行source /opt/f.../4../e.. 这个问题也得解决