【问题标题】:Is it possible to write a C program on Windows for Linux是否可以在 Windows 上为 Linux 编写 C 程序
【发布时间】:2022-01-13 23:37:09
【问题描述】:

我正在创建一个 linux shell,我一直在我的 windows 10 pc 上的 linux 的 VirtualBox 虚拟机上开发它。最近我升级到了 Windows 11,由于某种原因,这使得 vm 以难以忍受的速度运行。因此我如何遵守而不使用 linux vm,所以我需要在 windows 中开发 shell 并使用 WSL2 或任何其他命令行执行它。是否可以在 Windows 上使用 linux 库(例如:)?

【问题讨论】:

  • WSL2 + VSCode + CMake = 爱。不能高度推荐它。
  • WSL2 的重点是您可以运行实际的 Linux 二进制文件,包括编译器和开发工具。所以,是的,您应该能够使用 WSL2 开发和测试您的 shell,然后发布二进制文件或源代码以在真正的 Linux 系统上使用。

标签: c linux windows virtualbox


【解决方案1】:

是的,如果您setup WSL2,您应该能够像在 VirtualBox 机器上一样开发 C。如果决定使用 Ubuntu,运行 sudo apt-get install build-essential 应该会为您提供编译和运行 C 程序所需的一切。

【讨论】:

  • 非常感谢,这确实有效。同样对于任何尝试这样做的人,请确保您的 c 文件在 wsl 文件系统中,否则它将无法工作。
  • 当我运行buf=getlogin(); 时出现的小问题是 null ,但是在 linux vm 上测试时它工作正常,您是否也知道解决此问题的方法?如果它有帮助,我认为这是登录登录的问题(我不是 linux 专家),因为命令 last 永远不会在 wsl 上返回登录,它只会打印 wtmp begins Fri Dec 31 22:41:00 2021
  • @Ledrake 确认 getlogin 失败(不知道为什么)但 getpwuid(getuid) 有效
【解决方案2】:

这叫做交叉编译。使用 WSL(2) 来构建应用程序有点“矫枉过正”,但它使测试结果变得容易得多。

如果您所追求的只是构建,而不是运行生成的可执行文件,我的建议是 MSys2 + LLVM + Clang。 LLVM/Clang 的好处在于,它始终是一个“交叉”编译器;您可以在每个受支持的主机上为每个受支持的目标进行编译。 https://clang.llvm.org/docs/CrossCompilation.html

MSys2 中也有针对 GCC 的 Linux 版本,所以这也是一个选项。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多