c - 用 Visual Studio 2017 编写的程序可以在 Linux 或 Unix 环境中运行吗?

标签 c linux environment

我现在对一件事很困惑。我目前正在用 C 进行编程,我很困惑这是否算作 Unix 或 Linux 环境。我真的需要下载 Linux 端口吗?或者我可以使用 Visual Studio 吗?问题是我写的程序将通过linux/unix进行评分。

最佳答案

您的问题没有简短的答案。考虑:

  • 默认情况下,Visual Studio 2017 的 C++ 工具链仅生成 Win32 PE executable files (*.exe*.dll 等)仅在 Windows Vista 或更高版本上运行(Windows XP 支持需要可选的 VS 组件)。
  • 默认情况下,Linux 无法运行这些 Win32 PE 可执行文件,但您可以安装 Wine 来尝试在同一 CPU 指令集上的 Linux 安装上运行它们。 Wine 使 Linux 能够运行 Win32 PE 可执行文件,并提供类似 Windows 的运行时环境(注册表、模拟 C:\Windows 路径等)供其运行: https://www.winehq.org/
  • Visual Studio 2017 可以使用两种不同的方法交叉编译到 Linux、macOS、iOS 和其他操作系统:
    • Visual Studio 2017 的首选方法是使用远程构建服务器:您的本地网络上有一台 Linux 或 Macintosh 计算机,该计算机运行构建代理进程,然后该进程在该远程计算机上构建软件,将构建工具链保留在远程计算机上。 Linux/Mac,甚至可以通过在附加远程调试器的远程计算机上运行程序来进行调试支持。
    • 另一种方法是使用在本地计算机上运行的交叉编译工具链来使用自定义 makefile。您可能需要安装 Cygwin 或 MINGW 等环境。
  • 除了 Wine 之外,所有其他选项都假设您的 C++ 代码实际上是可移植的:您不使用任何特定于平台的 API(即您坚持使用 C++ 标准库)或者您正在使用带有条件编译的特定于平台的 API .
  • 另请记住,“Linux”不是单一平台:为 Ubuntu 16.0 x64 构建的二进制可执行文件可能无法在 RedHat x64 上运行,尤其无法在 FreeBSD 或 OpenBSD 上运行(它们不是 Linux,而是一种形式) Unix)。

关于c - 用 Visual Studio 2017 编写的程序可以在 Linux 或 Unix 环境中运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52978421/

相关文章:

C 中的 crc32 计算在 ATMEGA 和 Linux 机器上产生不同的结果

linux - 如何快速遍历目录并统计文件数量

c++ - glib-2.0中缺少'/usr/include/glib-2.0/glib/gurifuncs.h

linux - 如何将 linux 命令保存在变量中,以便在 shell 脚本的后面部分使用

java - 无法在 Windows 上构建 Android 葫芦环境

PHP 包含数组警告

c - MPI多线程中的vfork VS fork

C堆栈内存转储,为什么第一个参数出现两次?

c - 如何解决 'undefined reference to pow'(已与 -lm 链接)?

bash - 如何在 Bash 中的引用字符串中使用环境变量