如何在Linux for Windows上与MinGW交叉编译?
发布时间:2020-12-14 01:02:08 所属栏目:Linux 来源:网络整理
导读:我正在尝试使用MinGW在 Linux上编译Windows的Qt5应用程序. 我正在使用Travis-CI来获得两个Windows可执行文件(win32,win64)的连续构建. 我已经建立了一个构建矩阵,其中包含不同MinGW依赖项的定义.安装前部分定义了Qt,MinGW和gcc依赖项.在安装期间获取包. 这是
我正在尝试使用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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |