• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
QinXian
博客园    首页    新随笔    联系   管理    订阅  订阅
C++交叉环境之Linux编译环境(无界面-指令)搭建
前言
  最近想在Ubuntu14.04虚拟机上编写串口通信相关的Qt程序,需要放到开发版上,所以需要在Linux终端上创建,但是随着了解的深入,发现并没有想的简单。首先是Ubuntu14.04的软件库里没有libqt5serialbus5-dev的包,不能像安装libqt5serialport5-dev那样方便;其次是自己的电脑性能不佳,编译Qt源码吃力又耗时。于是,就有了以下的实现方法,模块化编译安装Qt。
一、离线安装包下载
  目前Qt支持最高版本的离线安装包是5.12.10的,本人使用的是5.12.8的,因为Qt新版本不支持离线了,现在离线安装包不稳定,目前还可以下载,以后就不知道了,下载地址:(安装包5.多的基本都可以,解压缩和安装不容易出错)
  下载地址:https://download.qt.io/archive/qt/5.15/5.15.2/single/
 
 
二、安装依赖项
首先,你需要安装编译Qt所需的依赖项。这通常包括编译器、make工具、以及Perl等。对于大多数基于Debian(如Ubuntu)的系统,可以使用以下命令安装这些依赖项:
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install perl
sudo apt-get install libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libfontconfig1-dev libfreetype6-dev libfreetype6
三、配置QT
在Qt的源码目录中,运行配置脚本。你可以通过指定一些选项来自定义你的Qt构建。例如,要为桌面环境配置Qt 5,可以使用
./configure -release -opensource -confirm-license -nomake examples -nomake tests LIABLE_LICENSE_ACCEPTED=YES

这里是一些常用选项的解释:

  • -release:编译为发布版本。

  • -opensource:使用开源许可。

  • -confirm-license:确认接受许可协议。

  • -nomake examples 和 -nomake tests:不编译示例和测试程序以节省时间。

LIABLE_LICENSE_ACCEPTED=YES:确认接受许可协议

四 编译Qt

使用make工具编译QT

make -j$(nproc).

五 安装QT
sudo make install
六 验证安装
qmake --version
 
-----以上是安装步骤
一般来说,交叉编译通常会跟串口有关系,Linux版本比较旧的话,编译QT如果使用到了QSerialport或者QSerialbus时候,就会报错,如下:
Unknow modus in QT:serialport、serialbus
遇到这种情况时候,通常有两种情况:一种是serialport、serialbus在编译时候没有被编译生成.so文件,像这种的话,可以执行以下命令来解决
sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev
在安装过程当中,有可能产生文件无法覆盖问题(安装失败),具体提示如下:
E: Unmet dependencies. Try 'apt --fix-broken install
这说明依赖关系轻微损坏,常见于安装中断或版本冲突
解决步骤:
sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包sudo apt --fix-broken install  # 自动修复依赖关系
sudo apt update                # 更新软件源列表
sudo apt upgrade               # 升级已安装的包
sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite" (修复命令失败,提示文件冲突或版本不兼容)
执行完毕后然后在执行:
sudo apt-get install libqt5serialport5
sudo apt-get install libqt5serialport5-dev 即可

若是在/usr/lib下面没有找到QSerialPort、serialbus.so文件,那就需要单独下载QSerialPort、QSerialBus源码来进行编译了
源码下载路径:
https://download.qt.io/archive/qt/5.15/5.15.2/submodules/ (不确定高版本是否能适配qt本身的版本,尽量在网上找对应自己版本的源码来编译)

 下载完成后进行解压缩处理

 然后cd进入目标文件,在。pro所在目录创建build文件夹,进入build文件夹来qmake .. ,避免污染源码库

 cd ./build

qmake ..

make

在执行qmake时候,有可能会发生:

<private/qiodevice_p.h> no such file 这个情况

搜了一下,是因为官方的qt安装已经取消默认安装关于private库的所有源文件,因为这个私有访问在QT官方已经说明了,会很大时候被忽略说着删掉,在安装的库里面就没有这个头文件以及相关的文件,需要额外安装,安装命令如下:(不知道其他的linux操作系统是不是也是如此)。所以需要额外安装这个private库

 对于Qt5

sudo apt install qtbase5-private-dev
对于Qt4

sudo apt install libqt4-private-dev


完成后,然后就能正常使用QT中的SerialPort SerialBus库了~

 

sudo apt --fix-broken install -o Dpkg::Options::="--force-overwrite"
sudo apt --fix-broken install # 自动修复依赖关系 sudo apt update # 更新软件源列表 sudo apt upgrade # 升级已安装的包
 
 
 
 
 
posted on 2025-03-13 18:51  蜕变-专一  阅读(105)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3