从Linux到Windows交叉编译C++应用程序的手册
Manual for cross-compiling a C++ application from Linux to Windows?
是否有从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}
中,您需要在构建过程的配置步骤中单独添加这些路径。
这取决于你的意思(我真的说不出来)。
-
如果你的意思是你想在Windows上使用现有的Linux应用程序,那么你可以尝试在Windows上用Cygwin编译它。然而,这并不能让你的Windows可执行文件摆脱对Cygwin的所有依赖(你的可执行文件仍然依赖于
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种体系结构的单个安装包。您可以从这里下载一个预构建的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档案(大部分未经测试)
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 为什么导入Mixed native/CLR lib.dll的本机C++应用程序没有在Mixed lib.dll中的外部变
- 如何从Windows应用程序输出到标准?
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- 如果整个应用程序是虚拟映射的,为什么 new 会进行系统调用?