将 C++ 应用程序从 Linux 交叉编译到 Windows 的手册?
-
06-07-2019 - |
题
是否有从 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
将 apt-get
替换为 yum
,或者Linux发行版使用的任何内容。这将为Windows生成 hello.exe
。
一旦了解了这一点,就可以使用 autotools ,并设置 CC = i586-mingw32msvc-cc
CC=i586-mingw32msvc-cc ./configure && make
或使用 CMake和工具链文件来管理构建。更难的是添加本机交叉库。通常它们存储在 / usr / cross / i586-mingw32msvc / {include,lib}
中,您需要在构建过程的configure步骤中单独添加这些路径。
其他提示
这取决于你的意思(我真的不能说)。
-
如果您的意思是要在Windows上使用现有的Linux应用程序,那么您可以尝试使用 Cygwin 。但是,这并没有为您提供一个Windows可执行文件,不受所有依赖于Cygwin的依赖(您的可执行文件仍依赖于
cygwin.dll
文件) - 并且它仍然可能需要一些移植才能工作。请参见 http://www.cygwin.com 。 -
如果您希望能够在Linux上执行Windows应用程序的实际编译并生成可在Windows上执行的.exe文件 - 那么使用您的Linux机箱进行开发和/或编译然后你应该查看Linux的 MinGW ,这是一个在Linux上进行Windows交叉编译的工具。请参见 http://www.mingw.org/wiki/LinuxCrossMinGW 。
醇>
祝你好运!
我建议你给出以下内容, 古布 (Grand Unified Builder)是一种尝试,它交叉编译了多个包及其依赖项,并将它们组装成当前 11 种架构的单个安装包。您可以从以下位置下载预构建的 iso 以在 VM 中安装: 这里 并追踪来源 这里. 。它目前可用于交叉编译 GNU LilyPond/ GNU Denemo / Inkscape 和 OpenOffice.org。
目标架构是:
- darwin-ppc - Darwin 7 (MacOS 10.3)/PowerPC 的 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/PowerPC 的 shar 存档
- freebsd-x86 - FreeBSD 4/x86 的共享存档
- freebsd-64 - FreeBSD 6/x86_64 的共享存档
- cygwin - 用于 Cygwin/Windows32 的 .tar.bz2 软件包
- arm - Linux/ARM 的 shar 存档(大部分未经测试)
- debian - Debian 的 shar 存档(大部分未经测试)