Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)
- 参考链接:
- MXE.
>
大多数程序都是在windows平台下开发的程序.windows 在现实中也是绕不过的一个系统平台,做为受过几年VC,MFC”虐待”的程序员,在做为一个程序员之前是一位Linux重度使用者,受够了MFC之后一直想要找一个框架替换,
使用过GTK,wxWidgets,Qt,最后还是Qt用得多一些.我认为程序跨平台应该是一个基本标准,同一份代码不需改动,或者改动极少,放在不同的平台下编译就能使用.不同平台,同样的界面,同样的操作,同样的体验.
这里要讲的是我如何在Linux 下开发跨平台的Qt程序,如何在linux开发windows程序.
>
MXE (M cross environment)
- MXE 真的是一个了不起的项目,详情请查看上面链接,非常详细.因为MXE就是在Linux下静态编译的跨平台环境,不需要你一步一步繁杂的编译工具链,直接按教程一键make就下载安装好,但是对Linux的操作熟悉会更加好排错.
安装教程
|
1
2
3
4
5
6
7
|
apt-get install \
autoconf automake autopoint bash bison bzip2 flex gettext\
git g++ gperf intltool libffi-dev libgdk-pixbuf2.0-dev \
libtool libltdl-dev libssl-dev libxml-parser-perl make \
openssl p7zip-full patch perl pkg-config python ruby scons \
sed unzip wget xz-utils g++-multilib libc6-dev-i386 libtool-bin
|
获取最新版本
|
1
2
3
|
$ cd /opt
$ git clone https://github.com/mxe/mxe.git
$ make MXE_TARGETS='x86_64-w64-mingw32.static i686-w64-mingw32.static' qt5
|
- 如果中间不出错,安装完成如下.
i686-w64-mingw32.static目录下就在如:我电脑系统64位下编译32位的exe, 而x86_64-w64-mingw32.static就是编译生成64位的exe.
|
1
2
|
$ls /opt/mxe/usr/
bin i686-w64-mingw32.static include installed lib libexec share x86_64-unknown-linux-gnu x86_64-w64-mingw32.static
|
设置Qt
英文教程有详细教程如何使用,如:(autotools,CMake,Makefile,QT…),这里贴图记录一下在
QtCreator下的设置.设置编译器
设置编译器设置Qt版本
设置Qt版本添加Qt Kit
设置Qt版本现在就可以在
Qt Creator里的工程下添加这个Kit里了,因为这里只是静态编了Release版本,如果指定为Debug配置,编译会出错的.
### 一些Qt 工程问题
Linux GL 链接库错误.
- 如果在Linux遇到链接系统下的GL库出错,只要在.pro 加入
QMAKE_LIBS_OPENGL -= -lGL,重新qmake,编译.
Release版本加入调试符号
- 在实际开发有遇到这种问题,在Linux的编译Debug,Release调试与运行都没有错误,但是在windows平台下运就崩溃出错,这时调试最有效的调试手段是是加入调试符号信息,在windows下运行GDB加载该程序,查看出错的原因.pro \
- 在.pro中在加如下三行,重新
qmake,编译.带调试信息的exe会长到几十M.
|
1
2
3
|
QMAKE_CXXFLAGS_RELEASE += -g
QMAKE_CFLAGS_RELEASE += -g
QMAKE_LFLAGS_RELEASE =
|
https://yjdwbj.github.io/2016/09/13/Linux%E4%B8%8B%E7%BC%96%E8%AF%91%E9%9D%99%E6%80%81MinGW%E7%8E%AF%E5%A2%83-%E7%BC%96%E8%AF%91windows%E5%B9%B3%E5%8F%B0Qt%E7%A8%8B%E5%BA%8F/
Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)的更多相关文章
- Linux下搭建 Cocos2d-x-2.1.4 编译环境
[tonyfield 2013.09.04 ] 参考 Linux下搭建 Cocos2d-x-2.1.4 编译环境 导入 HelloCpp 例程 1. Java 入口 HelloCpp.java Hel ...
- windows和linux下 Python2,Python3 的环境及安装
目录 windows和linux下 Python2,Python3 的环境及安装 window下安装 一. 手动安装 二. pip安装 linux下 安装 更新Python 笔者有话 windows和 ...
- Linux下配置PHP开发环境
转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...
- linux下的静态库和动态库
一.linux下的静态库 静态库中的被调用的函数的代码会在编译时一起被复制到可执行文件中去的!!可执行文件在运行不需要静态库的存在! 二.linux下动态库的构建和使用 1.动态库的构建 ...
- linux下的静态库和共享库
转载&&增加: 我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期 ...
- LibOpenCM3(一) Linux下命令行开发环境配置
目录 LibOpenCM3(一) Linux下命令行开发环境配置 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板 LibOpenCM3 介绍 LibOpenCM3 是GPL协议( ...
- Windows10下配置Linux下C语言开发环境
今天为大家介绍如在Windows10下配置Linux下C语言开发环境,首先安装linux子系统:启用开发者模式 1.打开设置 2.点击更新和安全3.点击开发者选项 4.启用开发人员模式 5.更改系统功 ...
- Linux下的静态IP配置【weber出品】
配置Linux下的静态IP地址 因为服务器的IP地址是固定的,不像我们自己家的笔记本的IP是动态的.所以我们要将这个地址给写成静态的. 直接编辑这个这个配置文件即可: vi /etc/sysconfi ...
- (转)Linux下设置和查看环境变量
原文地址:<Linux下设置和查看环境变量> Linux的变量种类 按变量的生存周期来划分,Linux变量可分为两类: 1. 永久的:需要修改配置文件,变量永久生效. 2. 临时的:使用e ...
随机推荐
- Ajax 学习之创建XMLHttpRequest对象------Ajax的核心
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- javascript优化--10模式(设计模式)01
单体模式:保证一个特定类仅有一个实例;即第二次使用同一个类创建新对象时,应该得到与第一个所创建对象完全相同对象: 在JS中,可以认为每次在使用对象字面量创建对象的时候,实际上就在创建一个单体: 当使用 ...
- BZOJ3289 Mato的文件管理(莫队算法+树状数组)
题目是区间逆序数查询. 莫队算法..左或右区间向左或右延伸时加或减这个区间小于或大于新数的数的个数,这个个数用树状数组来统计,我用线段树超时了.询问个数和数字个数都记为n,数字范围不确定所以离散化,这 ...
- BZOJ1085 [SCOI2005]骑士精神(IDA*)
IDA*是IDS的基础上加上满足A*算法的估值函数来剪枝的搜索算法. 这题代码量挺少的,可以看出整个IDA*的框架: #include<cstdio> #include<cstrin ...
- TYVJ P1004 滑雪 Label:记忆化搜索
背景 成成第一次模拟赛 第三道 描述 trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜. ...
- TYVJ P1023 奶牛的锻炼 Label:dp
背景 USACO 描述 奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息.若她在第i分钟跑步,可以跑出D_i米,同时疲倦程度增加1(初始为0).若她在第i分钟休息,则疲倦程度减少1.无论何时 ...
- 【NOIP2003】传染病控制(-贪心/dfs)
我自己yy了个贪心算法,在某oj 0msAC~.然后去wikioi提交,呵呵,原来是之前oj的数据太弱给我水过了,我晕. 我之前的想法是在这棵树上维护sum,然后按时间来割边,每一时刻割已经感染的人所 ...
- JS中setInterval、setTimeout不能传递带参数的函数的解决方案
在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法 在JS中无论是setTimeout还是s ...
- 三星S4接电话黑屏无法挂断通话
最近发现S4的通话距离感应起出了问题,接电话后直接熄屏,按什么按钮都没有反应.通话结束后只能等对方挂断才会恢复正常,再或者长按9秒电源键强制重启.极大的影响了实用体验.网上搜了下,发现这样的问题还不少 ...
- PHPExcel 是用来操作Office Excel 文档的一个PHP类库
PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言.可以使用它来读取.写入不同格式的电子表格,如 Excel (BIFF) .xls ...