从Linux到Windows交叉编译C++应用程序的手册

Manual for cross-compiling a C++ application from Linux to Windows?

本文关键字:应用程序 C++ 交叉编译 Linux Windows      更新时间:2023-10-16

是否有从Linux到Windows交叉编译C++应用程序的手册?

仅此而已。我想要一些信息(链接、参考资料、示例…)来指导我这样做。

我甚至不知道这是否可能。

我的目标是在Linux中编译一个程序,并获得一个可以在Windows下运行的.exe文件。

基础并不太难:

sudo apt-get install mingw32    
cat > main.c <<EOF
int main()
{
  printf("Hello, World!");
}
EOF
i586-mingw32msvc-cc main.c -o hello.exe

yum或您的Linux发行版使用的任何内容替换apt-get。这将生成一个适用于Windows的hello.exe

一旦你明白了这一点,你就可以使用自动工具,并设置CC=i586-mingw32msvc-cc

CC=i586-mingw32msvc-cc ./configure && make

或者使用CMake和工具链文件来管理构建。更困难的是添加本机交叉库。通常它们存储在/usr/cross/i586-mingw32msvc/{include,lib}中,您需要在构建过程的配置步骤中单独添加这些路径。

这取决于你的意思(我真的说不出来)。

  1. 如果你的意思是你想在Windows上使用现有的Linux应用程序,那么你可以尝试在Windows上用Cygwin编译它。然而,这并不能让你的Windows可执行文件摆脱对Cygwin的所有依赖(你的可执行文件仍然依赖于cygwin.dll文件),而且它可能还需要一些移植才能工作。看见http://www.cygwin.com.

  2. 如果你的意思是,你希望能够在Linux上执行Windows应用程序的实际编译,并生成一个在Windows上可执行的.exe文件,从而使用你的Linux盒子进行开发和/或编译,那么你应该研究MinGW for Linux,这是一个用于在Linux上交叉编译Windows的工具。看见http://www.mingw.org/wiki/LinuxCrossMinGW.

致以最良好的问候!

我建议您尝试一下下面的GUB(Grand Unified Builder),因为它交叉编译了几个具有依赖关系的包,并将它们组装成一个适用于当前11种体系结构的单个安装包。您可以从这里下载一个预构建的iso以安装在VM中,并按照这里的源代码进行操作。它目前可以用于交叉编译GNU LilyPond/GGNU Denemo/Inkscape和OpenOffice.org。

目标架构为:

  • darwin ppc-适用于darwin 7(MacOS 10.3)/PPowerPC的tar.bz2文件
  • darwin-x86-darwin 8(MacOS 10.4)/x86的tar.bz2文件
  • mingw-适用于Windows32的mingw可执行文件
  • linux-x86-适用于linux/x86的shar归档
  • linux-64-适用于linux/x86_64的shar归档
  • linux ppc-适用于linux/PPowerPC的shar存档
  • freebsd-x86-适用于FreeBSD4/x86的shar归档
  • freebsd-64-适用于freebsd 6/x86_64的shar存档
  • cygwin/Windows32的cygwin-.tar.bz2软件包
  • 适用于Linux/arm的arm-shar存档(大部分未经测试)
  • debian-shar debian档案(大部分未经测试)