【发布时间】:2010-09-15 23:51:29
【问题描述】:
是否有将 C++ 应用程序从 Linux 交叉编译到 Windows 的手册?
就是这样。我想要一些信息(链接、参考、示例...)来指导我这样做。
我什至不知道这是否可能。
我的目标是在 Linux 中编译一个程序,得到一个可以在 Windows 下运行的 .exe 文件。
【问题讨论】:
标签: c++ windows linux cross-compiling
是否有将 C++ 应用程序从 Linux 交叉编译到 Windows 的手册?
就是这样。我想要一些信息(链接、参考、示例...)来指导我这样做。
我什至不知道这是否可能。
我的目标是在 Linux 中编译一个程序,得到一个可以在 Windows 下运行的 .exe 文件。
【问题讨论】:
标签: c++ windows linux cross-compiling
基础并不难:
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} 中,您需要在构建过程的配置步骤中单独添加这些路径。
【讨论】:
wine hello.exe 应该这样做!
$ sudo apt-get install mingw-w64。编译器是x86_64-w64-mingw32-gcc。
这取决于你的意思(我真的不能说)。
如果您的意思是要在 Windows 上使用现有的 Linux 应用程序,那么您可以尝试在 Windows 上使用 Cygwin 编译它。然而,这并没有为您提供一个没有对 Cygwin 的所有依赖项的 Windows 可执行文件(您的可执行文件仍然依赖于 cygwin.dll 文件) - 它仍然可能需要一些移植才能工作。见http://www.cygwin.com。
如果您的意思是您希望能够在 Linux 上执行 Windows 应用程序的实际编译并生成在 Windows 上可执行的 .exe 文件 - 从而使用您的 Linux 机器进行开发和/或编译然后你应该查看MinGW for Linux,它是一个用于在 Linux 上为 Windows 进行交叉编译的工具。见http://www.mingw.org/wiki/LinuxCrossMinGW。
最好的问候!
【讨论】:
我建议您尝试以下方法,GUB(Grand Unified Builder),因为它交叉编译了几个包及其依赖项,并将它们组装成一个适用于当前 11 种架构的安装包。您可以从here 下载预构建的iso 以安装在VM 中,并关注源here。目前可用于交叉编译 GNU LilyPond/GNU Denemo/Inkscape 和 OpenOffice.org。
目标架构是:
【讨论】: