在Linux上为Windows目标配置Qt交叉编译
问题描述
我想使用Linux x86_64主机为Windows x86_64目标交叉编译Qt库(最终也包括我的应用程序)。我觉得自己已经接近成功了,但可能对整个过程有一些基本的误解。
我从在我的Fedora机器上安装所有mingw包开始,并修改了win32-g++的qmake.conf文件以适应我的环境。然而,我似乎在Qt的某些显而易见的配置选项上遇到了问题:-platform
和-xplatform
。Qt文档说-platform
应该是主机架构(你正在编译的机器),而-xplatform
应该是你希望部署的目标平台。在我的情况下,我设置了-platform linux-g++-64
和-xplatform linux-win32-g++
,其中linux-win32-g++是我修改过的win32-g++配置。
我的问题是,在使用这些选项执行配置后,我看到它调用了我系统的编译器而不是交叉编译器(x86_64-w64-mingw32-gcc)。如果我省略了-xplatform
选项并将-platform
设置为我的目标规范(linux-win32-g++),它会调用交叉编译器,但在发现一些与Unix相关的函数未定义时出错。
某次尝试的输出: Pastebin链接
问题
- 当从Linux主机为Windows交叉编译Qt时,本地编译器是否会被调用?也就是说,在交叉编译过程中,我们应该仅使用交叉编译器吗?我不明白为什么在指定
-xplatform
选项时,Qt的配置脚本会调用我系统的本地编译器。 - 如果我使用的是mingw交叉编译器,什么时候需要处理一个specs文件?GCC的specs文件对我来说仍然很神秘,我想知道一些相关背景是否会有所帮助。
- 一般来说,除了在我的qmake.conf中指定一个交叉编译器外,我还需要考虑什么?
答案整理
答案1:使用MXE进行交叉编译
跨平台编译Qt的一个简便方法是使用MXE(M cross environment)。步骤如下:
-
获取MXE:
git clone https://github.com/mxe/mxe.git
-
安装构建依赖。
-
构建Qt及其依赖项和交叉构建工具,这大约需要一小时:
cd mxe && make qt
-
将交叉构建工具添加到你的PATH环境变量中:
export PATH=<mxe root>/usr/bin:$PATH
-
使用qmake生成Makefile并构建:
<mxe root>/usr/i686-pc-mingw32/qt/bin/qmake && make
-
你应该能在./release目录下找到二进制文件:
wine release/foo.exe
答案2:使用Archlinux的MinGW-w64工具链
另一个方法是在基于Arch的系统上使用MinGW-w64工具链:
-
安装必要的软件包:
yay -Sy mingw-w64-qt5-base mingw-w64-boost
-
在项目目录中使用交叉编译工具进行构建:
x86_64-w64-mingw32-qmake-qt5 make
-
部署时需要将对应的dll文件复制到你的可执行文件目录中。
注意事项
- 在配置Qt时,如果遇到idc相关问题,添加
-skip qtactiveqt
参数可以跳过这些问题。 - 在配置过程中,本地主机的编译器可能会被调用,用于构建一些必要的工具,例如
qmake
。
cd qt_source_directory
mkdir my_build
cd my_build
../configure \-release \-opensource \-no-compile-examples \-platform linux-g++-64 \-xplatform win32-g++ \-device-option CROSS_COMPILE=/usr/bin/x86_64-w64-mingw32- \-skip qtactiveqt \-v
结论
交叉编译Qt从Linux到Windows涉及指定正确的配置参数并确保交叉编译器被正确调用。使用像MXE或Archlinux的MinGW-w64工具链能简化这个过程,避免许多潜在的问题。
相关文章:
![](https://www.ngui.cc/images/no-images.jpg)
在Linux上为Windows目标配置Qt交叉编译
问题描述 我想使用Linux x86_64主机为Windows x86_64目标交叉编译Qt库(最终也包括我的应用程序)。我觉得自己已经接近成功了,但可能对整个过程有一些基本的误解。 我从在我的Fedora机器上安装所有mingw包开始,并修改了win32-g的…...
![](https://img-blog.csdnimg.cn/direct/c6f94d8a36d4443cac4b495ee9f741de.png)
Introduction to linear optimization 第 2 章课后题答案 11-15
线性规划导论 Introduction to linear optimization (Dimitris Bertsimas and John N. Tsitsiklis, Athena Scientific, 1997), 这本书的课后题答案我整理成了一个 Jupyter book,发布在网址: https://robinchen121.github.io/manual-introdu…...
![](https://img-blog.csdnimg.cn/direct/579eb5b01a5d4157864ea6e637bf1a06.png)
Java——包
一、包 1、简要介绍 在Java编程语言中,包(Package) 是一种用来组织和管理类(Class)和接口(Interface)的机制。包为开发者提供了一种逻辑分组的方式,使代码更加模块化、结构化和易于…...
![](https://www.ngui.cc/images/no-images.jpg)
Pipeline知识小记
在scikit-learn(通常缩写为sklearn)中,Pipeline是一个非常重要的工具,它允许你将多个数据转换步骤(如特征选择、缩放等)和估计器(如分类器、回归器等)组合成一个单一的估计器对象。这…...
![](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=file%3A%2F%2F%2FC%3A%2FUsers%2Fsyj15%2FPictures%2FTypedown%2Fb7092823-5655-4ae5-9979-208a43844224.png&pos_id=img-A18otqyC-1719010089114)
postman国内外竞争者及使用详解分析
一、postman简介 Postman 是一款广泛使用的 API 开发和测试工具,适用于开发人员和测试人员。它提供了一个直观的界面,用于发送 HTTP 请求、查看响应、创建和管理 API 测试用例,以及自动化 API 测试工作流程。以下是 Postman 的主要功能和特点…...
![](https://img-blog.csdnimg.cn/19dbe717f6274b929106d733448762c8.png)
人工智能对决:ChatGLM与ChatGPT,探索发展历程
图: a robot is writing code on a horse, By 禅与计算机程序设计艺术 目录 ChatGLM:...
![](https://www.ngui.cc/images/no-images.jpg)
探索Python元类的奥秘及其应用场景
探索Python元类的奥秘及其应用场景 一、引言 在Python中,元类(Metaclasses)是一个相对高级且容易被忽视的主题。然而,对于深入理解Python的面向对象编程模型以及进行高级框架和库的设计来说,元类是一个不可或缺的工具…...
![](https://img-blog.csdnimg.cn/direct/258d2310529d442bb06f669e6ee0e686.png)
C语言基础关键字的含义和使用方法
关键字在C语言中扮演着非常重要的角色,它们定义了语言的基本构造和语法规则,通过使用关键字,开发者可以创建变量、定义数据类型、控制程序流程(如循环和条件判断)、声明函数等。由于这些字是保留的,所以编…...
![](https://img-blog.csdnimg.cn/img_convert/8a3a08629d05bc54e13a53c4804304bf.jpeg)
【Golang - 90天从新手到大师】Day09 - string
系列文章合集 Golang - 90天从新手到大师 String 一个字符串是一个不可改变的字节序列。字符串可以包含任意的数据,但是通常是用来包含人类可读的文本。 len()返回字符串字节数目(不是rune数)。 通过索引可以访问某个字节值,0…...
![](https://www.ngui.cc/images/no-images.jpg)
网络安全与区块链技术:信任与安全的融合
# 网络安全与区块链技术:信任与安全的融合 在网络空间,信任是一种宝贵而稀缺的资源。区块链技术以其独特的分布式账本、加密算法和共识机制,为构建网络安全提供了新的解决方案。本文将探讨网络安全与区块链技术如何融合,以增强信…...
![](https://img-blog.csdnimg.cn/direct/a5bfdfdf6ced4b64af5195bb36a50c00.png)
MySQL之复制(九)
复制 复制管理和维护 确定主备是否一致 在理想情况下,备库和主库的数据应该是完全一样的。但事实上备库可能发生错误并导致数据不一致。即使没有明显的错误,备库同样可能因为MySQL自身的特性导致数据不一致,例如MySQL的Bug、网络中断、服务…...
![](https://img-blog.csdnimg.cn/direct/cbeed1f0104c4f7380f37a309f3af1cb.png#pic_center)
【面试干货】 Java 中的 HashSet 底层实现
【面试干货】 Java 中的 HashSet 底层实现 1、HashSet 的底层实现2、 HashSet 的特点3、 总结 💖The Begin💖点点关注,收藏不迷路💖 HashSet 是 Java 集合框架中的一个重要成员,它提供了不存储重复元素的集合。但是&am…...
![](https://www.ngui.cc/images/no-images.jpg)
爬虫经典案例之爬取豆瓣电影Top250(方法二)
在上一篇文章的基础上,改进了代码质量,增加了多个正则表达式匹配,但同事也增加了程序执行的耗时。 from bs4 import BeautifulSoup import requests import time import re from random import randint import pandas as pdurl_list [https…...
![](https://www.ngui.cc/images/no-images.jpg)
如何优化React应用的性能?
优化React应用的性能是一个多方面的过程,涉及到代码的编写、组件的设计、资源的管理等多个层面。以下是一些常见的性能优化策略: 避免不必要的渲染: 使用React.memo、useMemo和useCallback来避免组件或其子组件不必要的重新渲染。 代码分割: 使用React.…...
![](https://img-blog.csdnimg.cn/direct/94543b358b004299983d8a794bd6793a.png)
css文字镂空加描边
css文字镂空加描边 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>文字镂空</title><style>/* 公用样式 */html,body{width: 100%;height: 100%;position: relative;}/* html{overflow-y: scroll;} */*{margi…...
![](https://www.ngui.cc/images/no-images.jpg)
python数据分析与可视化
Python 在数据分析和可视化方面有着广泛的应用,并且拥有众多强大的库和工具来支持这些任务。以下是一些常用的 Python 库和它们的主要用途: 数据分析 Pandas: Pandas 是 Python 中用于数据处理和分析的主要库。 它提供了数据框(DataFrame)和序列(Series)两种数据结构…...
![](https://www.ngui.cc/images/no-images.jpg)
webkit 的介绍
WebKit 是一个开源的网页浏览器引擎,它是 Safari 浏览器和许多其他应用程序的基础。WebKit 最初由苹果公司开发,并在2005年作为开源项目发布。WebKit 的核心组件包括 WebCore 和 JavaScriptCore。以下是 WebKit 的详细介绍: ### WebKit 的主…...
![](https://img-blog.csdnimg.cn/direct/ecf1383b97fc4f768583317748e131d8.jpeg)
make与makefile
目录 一、make的默认目标文件与自动推导 二、不能连续make的原因 执行原理 touch .PHONY伪目标 make指令不回显 makefile多文件管理 简写依赖方法 三、回车与换行 四、缓冲区 一、make的默认目标文件与自动推导 假设这是一个makefile文件,make的时候默认生…...
![](https://img-blog.csdnimg.cn/direct/c95254c74bd04e6bb4dd75d8a8335e26.png)
深度神经网络一
文章目录 深度神经网络 (DNN)1. 概述2. 基本概念3. 网络结构 深度神经网络的层次结构详细讲解1. 输入层(Input Layer)2. 隐藏层(Hidden Layers)3. 输出层(Output Layer)整体流程深度神经网络的优点深度神经…...
![](https://img-blog.csdnimg.cn/img_convert/600dd09771bbf79e8fa2f1b062dc65e2.png)
Pnpm:包管理的新星,如何颠覆 Npm 和 Yarn
在探索现代 JavaScript 生态系统时,我们常常会遇到新兴技术的快速迭代和改进。其中,包管理工具的发展尤为重要,因为它们直接影响开发效率和项目性能。最近,pnpm 作为一种新的包管理工具引起了广泛关注。它不仅挑战了传统工具如 np…...
![](https://www.ngui.cc/images/no-images.jpg)
汽车IVI中控开发入门及进阶(三十二):i.MX linux开发之Yocto
前言: 对于NXP的i.mx,如果基于linux开发,需要熟悉以下文档: IMX_YOCTO_PROJECT_USERS_GUIDE.pdf IMX_LINUX_USERS_GUIDE.pdf IMX_GRAPHICS_USERS_GUIDE.pdf 如果基于android开发,需要熟悉一下文档: Android_Auto_Quick_Start_Guide.pdf ANDROID_USERS_GUIDE.pdf …...
![](https://www.ngui.cc/images/no-images.jpg)
tessy 编译报错:单元测试时,普通桩函数内容相关异常场景
目录 1,失败现象 2,原因分析 1,失败现象 1,在 step 桩函数正常的情况下报错。 2,测试代码执行的数据流 和 step 桩函数内容不一致。 2,原因分析 桩函数分为 test object, test case, test step 三种类别。…...
![](https://www.ngui.cc/images/no-images.jpg)
计算机专业是否仍是“万金油”
作为一名即将参加高考的学生,我站在人生的分岔路口上,面临着选择大学专业的重大抉择。在这个关键节点,计算机相关专业是否仍是炙手可热的选择? 首先,从行业的角度来看,计算机相关专业确实在近年来持续火…...
![](https://img-blog.csdnimg.cn/img_convert/621ba0e6632b48d27fba0c3a452cdc94.png)
雷池社区版自动SSL
正常安装雷池,并配置站点,暂时不配置ssl 不使用雷池自带的证书申请。 安装(acme.sh),使用域名验证方式生成证书 先安装git yum install git 或者 apt-get install git 安装完成后使用 git clone https://gitee.com/n…...
![](https://www.ngui.cc/images/no-images.jpg)
怎样减少徐州服务器租用的成本?
服务器租用的出现,十分便于网络行业的发展,但是随着服务器租用的广泛应用,整体还是有着一定的成本的吗,不同的服务器类型在价格方面也是不同的,那么企业在选择服务器租用后,怎样才能减少服务器租用的成本呢…...
![](https://img-blog.csdnimg.cn/img_convert/79be6250fa9252d5eafb8f9d061964b4.png)
【性能优化】表分桶实践最佳案例
分桶背景 随着企业的数据不断增长,数据的分布和访问模式变得越来越复杂。我们前面介绍了如何通过对表进行分区来提高查询效率,但对于某些特定的查询模式,特别是需要频繁地进行数据联接查或取样的场景,仍然可能面临性能瓶颈。此外…...
![](https://www.ngui.cc/images/no-images.jpg)
数据仓库的挑战
建设数据仓库是一个复杂且资源密集的过程,需要考虑多个方面。以下是建设数据仓库时常见的挑战及其详细解释: 1. 数据集成 挑战: 数据来源多样:数据来自不同的系统、数据库、文件格式(如CSV、JSON、XML)、…...
![](https://img-blog.csdnimg.cn/direct/09d47f151a404209b846d31aacef9cf0.png)
基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)
引言 先看问题: 我手边有一数据集,然后我想分分类!~~ 咳咳,最近刚做了一个:训练集有1143张,分为5类,里面图片是打乱的。测试集有248张,想把它分分类看看咋样。 再看一下效果: …...
![](https://img-blog.csdnimg.cn/direct/80b0049e0dea4d0e9e7d773898fef7b5.png)
自动化测试:Autorunner的使用
自动化测试:Autorunner的使用 一、实验目的 1、掌握自动化测试脚本的概念。 2、初步掌握Autorunner的使用 二、Autorunner的简单使用 autoRunner使用方法 新建项目 a) 在项目管理器空白区域,右键鼠标,选择新建项目 b) 输入项目名后,点击[确定]. 在初次打开aut…...
![](https://img-blog.csdnimg.cn/direct/630388ad1a25426aba045f306e45fba7.png)
时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测
目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…...
![](https://img-blog.csdnimg.cn/20210810140525171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hvdTA5dGlhbg==,size_16,color_FFFFFF,t_70)
wordpress安卓源码/专业seo外包
6 分组注释 从图1中可以看出,“编辑菜单”的第六部分主要是分组注释。该项的作用是设置指定数据包的注释。点击该选项,会弹出如图8所示的对话框。 图8 分组注释对话框 在对话框中可以添加对该数据包的注释,通过再次点击“分组注释”选项会显…...
![](https://img-blog.csdnimg.cn/31c36d0fa2ee47d490b0054dc02d723f.png)
网站seo推广优化报价表/网络营销计划的七个步骤
这里写目录标题1.DataSource理论知识1.DataSource理论知识 什么是数据源-DataSource 简单理解为数据源头,提供了应用程序所需要数据的位置。数据源保证了应用程序与目标数据之间交互的规范和协议,它可以是数据库,文件系统等等。其中数据源定…...
![](https://images2015.cnblogs.com/blog/1092610/201703/1092610-20170326184600252-1779858867.png)
备案后可以修改网站吗/怎么简单制作一个网页
jinfo [-flags] pid 显示该进程的java设置,包括系统参数、虚拟机设置VM flags和启动参数Command line,加上-flags后只显示后两种 jmap -heap pid 显示使用了哪种垃圾收集器,heap有关的设置是什么,heap各个区域的使用量和使用率。图…...
![](/images/no-images.jpg)
好f123网站/网络营销技巧
# 清空一下 ~/.ssh/known_hosts 文件再重新连接就ok了...
![](https://img-blog.csdnimg.cn/img_convert/d672bfaaab47765eab960a6af591540e.png)
张家口做网站哪家好/我想注册一个网站怎么注册
欢迎观看indesign教程,小编带大家学习 InDesign 的基本工具和使用技巧,了解如何使用“链接”面板链接图形。 默认情况下,在InDesign中放置图形时,图形将链接到InDesign外部的原始图形文件。这样文档文件的大小更小,并…...
![](https://img-blog.csdnimg.cn/img_convert/5ea96fb42ec86f35a652cf3f6df47db2.png)
114网站做推广怎么样/百度seo白皮书
第三方验收测试 第三方验收测试-验收测试服务-UAT测试-网站测试报告-Alltesting泽众云测试www.alltesting.cn/jsp/newVersion2/bigNews/testService/check-test.jsp 第三方验收测试是公正、客观地评估系统功能、性能、安全等质量特性与需求规格说明书是否一致的过程࿰…...