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

时间:2008-10-08 12:09:45

标签: c++ windows linux cross-compiling

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

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

我甚至不知道是否可能。

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

3 个答案:

答案 0 :(得分:53)

基础知识并不太难:

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

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

一旦了解了这一点,就可以使用autotools,然后设置CC=i586-mingw32msvc-cc

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

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

答案 1 :(得分:6)

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

  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

  3. 祝你好运!

答案 2 :(得分:4)

我建议您尝试下面的GUB(Grand Unified Builder),因为它会将几个包与其依赖项交叉编译,然后将它们组装到一个安装包中,用于当前的11个体系结构。您可以从here下载预安装的iso以便在VM中安装,并按照源here进行操作。它目前可用于交叉编译GNU LilyPond / GNU Denemo / Inkscape和OpenOffice.org。

目标架构是:

  • darwin-ppc - 用于Darwin 7的tar.bz2文件(MacOS 10.3)/ PowerPC
  • darwin-x86 - 用于Darwin 8的tar.bz2文件(MacOS 10.4)/ x86
  • mingw - Windows32的mingw可执行文件
  • linux-x86 - 用于Linux / x86的shar存档
  • linux-64 - 用于Linux / x86_64的shar存档
  • linux-ppc - 针对Linux / PowerPC的shar存档
  • freebsd-x86 - 针对FreeBSD 4 / x86的shar存档
  • freebsd-64 - 针对FreeBSD 6 / x86_64的shar存档
  • 用于Cygwin / Windows32的cygwin - .tar.bz2软件包
  • arm - 用于Linux / ARM的存档(很大程度上未经测试)
  • debian - Debian的存档(很大程度上未经测试)