在Linux上使用Qt创建Windows可执行文件

7

使用Eclipse能否在Linux上为Linux和Windows创建可执行文件,使用相同的Qt代码?或者必须在Linux机器上安装Qt Creator?

5个回答

3

如果你想在Linux上构建Windows二进制文件,你需要进行交叉编译。这意味着你需要安装一个Windows交叉编译器,以及使用该交叉编译器构建的链接库。对于一个基本的Qt程序,这意味着你至少需要一个交叉编译的Qt。

交叉编译与Eclipse或Qt Creator无关。我认为两者都不支持开箱即用的交叉编译,但我想你可以让它们支持。


实际上,我需要在Linux中使用QT创建Windows可执行文件,并且我的要求是只需安装Windows QT二进制文件并在Linux中运行我创建的可执行文件。因此,请告诉我是否可以在Linux中使用QT Eclipse集成创建Linux和Windows可执行文件。 - Vincat
我已经得到了我的程序的Linux可执行文件,但如何在Linux上获取相同的Windows可执行文件? - Vincat
1
抱歉,我不太明白你的问题。如果你想在Linux上交叉编译Windows二进制文件,你需要先交叉编译Qt,并且你需要自己完成这个过程。我从未见过任何预打包的跨平台Qt交叉编译版本。Qt Eclipse集成根本不会创建任何二进制文件。它只运行编译器,而要在Linux上构建Windows二进制文件,你需要安装一个交叉编译器。 - bluebrother
1
不,Vincat,你的Linux可执行文件不能在Windows上运行。你需要按照bluebrother的建议进行交叉编译。这意味着你需要在Linux机器上安装一个交叉编译包,它将为Windows编译你的代码并链接到Windows库。然后你可以在Windows上使用那个可执行文件。看看MinGW编译器,我知道它可以在Windows上编译Qt,并提供了适用于Linux的交叉编译器。 - Bob Somers

0
当然,可以在Linux中安装Qt Creator。相同的Qt代码可用于在Linux / Win32 / Mac中编译。但是,您应该仅在特定平台内使用特定平台的代码:
#ifdef Q_OS_WIN32
    qDebug() << "Executable files end in .exe";
#endif

其他操作系统也有其他的定义。如果你这样做,你就是安全的,而且可以保证它是跨平台的代码。:-)

请参考http://www.qtsoftware.com/downloads并下载Linux/X11的Qt SDK。它包含了Qt Creator、Assistant、Designer等工具。


实际上,我需要在Linux中使用QT创建Windows可执行文件,并且我的要求是只需安装Windows QT二进制文件并在Linux中运行我创建的可执行文件。请告诉我是否可以在Linux中使用QT Eclipse集成创建Linux和Windows可执行文件。我已经能够为我的程序获取Linux可执行文件,但如何在Linux中获取相同的Windows可执行文件? - Vincat
这是一个关于如何在Linux内部进行交叉编译Windows的链接 - http://silmor.de/29 - Alan Haggai Alavi

0

前段时间我尝试做这件事,然后在这里找到了有关交叉编译的资源:http://silmor.de/qtstuff.cross.php。最终我在Windows下编译了win32版本,因为时间不够,但应该是可行的。


-1

对于Eclipse,有一个官方插件

C++的Qt Eclipse集成

可以使用Eclipse插件来创建使用任何Qt版本自4.1.0以来的程序。


他并没有回答问题,他已经在使用Eclipse来开发Qt了。 - Matthew Read

-3

在Windows上可执行的程序在Linux上无法运行,反之亦然。您可以这样做:

#ifdef Q_WS_X11
QString *OS=new QString("Linux");
std::cout << OS->toStdString() << std::endl;
#endif
#ifdef Q_WS_WIN
QString *OS=new QString("Windows");
std::cout << OS->toStdString() << std::endl;
#endif
#ifdef Q_WS_MACX
QString *OS=new QString("Mac");
std::cout << OS->toStdString() << std::endl;    
#endif

2
为什么?这段代码有什么作用?它只是打印出我使用的操作系统,没有其他任何功能。我不理解... - Tebe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接