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

Pab*_*ero 40 c++ linux windows cross-compiling

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

只是.我想要一些信息(链接,参考,例子......)来指导我这样做.

我甚至不知道是否可能.

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

ric*_*chq 53

基础知识并不太难:

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

替换apt-getyum或者Linux发行版使用的任何内容.这将为hello.exeWindows 生成一个.

一旦你了解了它,就可以使用autotools并设置CC=i586-mingw32msvc-cc

CC=i586-mingw32msvc-cc ./configure && make
Run Code Online (Sandbox Code Playgroud)

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

  • `wine hello.exe`应该这样做! (6认同)
  • 对于像这样的愚蠢简单程序,WINE是可以的,但VM(VirtualBox,VMWare,QEMU等)是你最好的选择. (4认同)
  • 如果要生成64位Windows二进制文件,请安装64位工具:`$ sudo apt-get install mingw-w64`.编译器是`x86_64-w64-mingw32-gcc`. (3认同)
  • 需要注意的一件事是,某些库不喜欢交叉编译。如果唯一的选择是.exe安装程序和源,则可能要在wine下安装该库,然后将这些库和标头复制到mingw搜索路径中。我永远无法让Boost交叉编译 (2认同)

And*_*son 6

这取决于你的意思(我真的不能说).

  1. 如果您的意思是要在Windows上使用现有的Linux应用程序,那么您可以尝试在Windows上使用Cygwin进行编译.但是,这并没有为您提供一个Windows可执行文件,不受所有依赖于Cygwin的依赖(您的可执行文件仍取决于cygwin.dll文件) - 并且它仍然可能需要一些移植才能工作.见http://www.cygwin.com.

  2. 如果你的意思是你要能够执行Linux上的Windows应用程序的实际编译并生成.exe文件是可执行文件在Windows上-从而用于开发和/或编译你的Linux机器,那么你应该考虑的MinGW的Linux是Linux上用于交叉编译Windows的工具.见http://www.mingw.org/wiki/LinuxCrossMinGW.

最好的祝福!