如何在Linux for Windows上与MinGW交叉编译?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Linux for Windows上与MinGW交叉编译?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2562字,纯文字阅读大概需要4分钟。
内容图文
![如何在Linux for Windows上与MinGW交叉编译?](/upload/InfoBanner/zyjiaocheng/971/a90f7c0fc9b14cc9a83212de352e3964.jpg)
我正在尝试使用MinGW在Linux上编译Windows的Qt5应用程序.
我正在使用Travis-CI来获得两个Windows可执行文件(win32,win64)的连续构建.
我已经建立了一个构建矩阵,其中包含不同MinGW依赖项的定义.安装前部分定义了Qt,MinGW和gcc依赖项.在安装期间获取包.
这是我的.travis.yml:
language: cpp
matrix:
fast_finish: true
include:
# cross-compile using mingw
- compiler: ": w64"
env: PLATFORM="mingw32" ARCH="x86_64" BITSIZE=64 HOST="x86_64"
- compiler: ": w32"
env: PLATFORM="mingw32" ARCH="x86" BITSIZE=32 HOST="i686"
install:
- sudo add-apt-repository --yes ppa:beineri/opt-qt54 # < Qt
- sudo add-apt-repository --yes ppa:tobydox/mingw-x-precise # < MinGW
- sudo apt-get update -qq
- uname -m
- sudo apt-get install qt54base qt54imageformats qt54tools -y -qq
- export QTDIR=/opt/qt54
- export PATH=$QTDIR/bin:$PATH
- export LD_LIBRARY_PATH=$QTDIR/lib/:$QTDIR/lib/`uname -m`-linux-gnu:$LD_LIBRARY_PATH
- sudo apt-get install -y cloog-isl mingw32
- if [ $BITSIZE == 32 ]; then sudo apt-get install -y mingw32-x-binutils mingw32-x-gcc mingw32-x-runtime; fi
- if [ $BITSIZE == 64 ]; then sudo apt-get install -y mingw64-x-binutils mingw64-x-gcc mingw64-x-runtime; fi
- export MINGW=/opt/mingw$BITSIZE
- export PATH=$MINGW/bin:$PATH
- export CC=$HOST-w64-mingw32-gcc
- export CXX=$HOST-w64-mingw32-g++
script:
- qmake -v
- qmake wpnxm-servercontrolpanel.pro CONFIG+=release QMAKE_CC=$CC QMAKE_CXX=$CXX
- gcc -v
- gcc -dumpmachine
- export CMAKE_OPTS="-DUSE_WERROR=ON"
- make -j2 VERBOSE=1
构建失败.
make的输出包含
i686-w64-mingw32-g++ -c -pipe -O2 -std=c++0x -D_REENTRANT -Wall -W -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I/opt/qt54/mkspecs/linux-g++ -I. -I/opt/qt54/include -I/opt/qt54/include/QtWidgets -I/opt/qt54/include/QtGui -I/opt/qt54/include/QtNetwork -I/opt/qt54/include/QtCore -I. -I. -o mainwindow.o src/mainwindow.cpp
src/mainwindow.cpp:1:0: warning: -fPIC ignored for target (all code is position independent)
/*
^
src/mainwindow.cpp:41:21: fatal error: QCheckbox: No such file or directory
#include <QCheckbox>
^
compilation terminated.
发现:这是QCheckBox.
我不确定,如果我拿到了正确版本的Qt5.
构建可执行文件需要哪些更改?
解决方法:
首先,确保安装了mingw32,mingw32-binutils和mingw32-runtime软件包.运行时包包含交叉编译所需的所有常用Windows标头,如缺少的“windows.h”.
还要注意,您正在尝试使用Linux版本的Qt库进行交叉编译.这将在链接阶段失败.您需要所有依赖项的mingw32版本(.DLL).
由于Travis还没有提供mingw32 Qt软件包,你必须从第三方来源安装它们(见http://docs.travis-ci.com/user/installing-dependencies/),如https://launchpad.net/~tobydox/+ppa-packages
内容总结
以上是互联网集市为您收集整理的如何在Linux for Windows上与MinGW交叉编译?全部内容,希望文章能够帮你解决如何在Linux for Windows上与MinGW交叉编译?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。