windows - 使用 MS Visual studio 2010 构建的交叉编译应用程序

标签 windows linux visual-c++ cross-compiling

我写了一个代码,基本上是针对windows使用VC++,开发环境是MS Visual Studio 2010。

注意:它是控制台应用程序,不包含 GUI。所以我想交叉编译。

我希望我的代码也能编译到 Linux,而不需要修改代码。我的意思是,我希望进行交叉编译。谁能简要介绍一下我的“操作方法”,或者将我重定向到 StackOverflow 上的一些帖子。

最佳答案

虽然你可以找到一个针对 Linux 的 GCC 版本,交叉编译以在 Windows 下运行(或者使用针对 Windows 平台的 GCC 版本从源代码构建它,例如 MINGW 或 cygwin),但在虚拟机中安装较小的 Linux 发行版(可能是仅包含控制台的发行版)可能会更容易。

正如您所提到的,您已经使用 WIN32 API 完成了 I/O。您需要将其更改为 unix/posix 类型的方法,可能包括学习如何更改终端设置,这可能是一种学习体验。要知道您是否正确,您需要能够对其进行测试。在 cygwin 下构建代码的“linux”版本并在 Windows 机器上运行它可能可行,但最好熟悉实际的目标操作系统。

只需验证您的 Windows 可执行文件是否在 Dani 提到的 Wine 下运行也不是一个坏主意。还有一个库 Winelib,旨在通过在尝试为 Linux 编译代码时提供 Windows 调用的替代品来帮助移植。

最后,无论您的目标是 Linux、Windows 还是 cygwin,只需将编译器从 MSVC 切换到 GCC,可能都需要对源代码进行一些更改。 MSVC 会容忍许多 GCC 不会的危险行为,例如声明结构的方式。反之亦然。但是,通过一些学习并定期将项目提供给两个编译器,您可以维护可移植的代码。

关于windows - 使用 MS Visual studio 2010 构建的交叉编译应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554394/

相关文章:

linux - 如何在不使用 Bash 脚本中的查找的情况下递归地获取包含工作文件夹的文件夹中的多个扩展名过滤的所有文件

linux - 从字符串中的位置获取单词 - Bash/Linux

c++ - 有条件的大型平面数组遍历和令人惊讶的短循环执行时间

c++ - 为什么我的 C++ 到十六进制转换会导致不同的格式?

Windows 8 无法通过批处理运行注册表文件

c++ - 如何使upnp Action ?

c++ - Visual Studio 2017中的链接器错误

c++ - 仅在 Release模式下堆损坏

c++ - 什么是 Win32 消息编码?

php - PHP 中的 DNS 查找