【问题标题】:If I compile a programme in C using linux library, can I use it on windows?如果我使用 linux 库在 C 中编译程序,我可以在 Windows 上使用它吗?
【发布时间】:2019-08-02 10:57:06
【问题描述】:

我只是想知道我是否可以使用我在 Windows 上使用 linux 库在 c 中编译的程序,以及是否可以将其转换为可以像 firefox 或其他软件一样启动的exe

我看到可以使用交叉编译器来创建 .exe 文件,但我使用 libcurlcsfml 之类的库(为 linux 使用而下载的)。

如果你有什么我感兴趣的建议。

TLDR:我可以使用 linux 库在 linux 上编译,以便在 .exe 中使用专用的 windows 吗?

【问题讨论】:

  • WSL可以直接在windows上运行linux程序,在某些情况下......
  • 我觉得你应该看看 java.lang.由于您的主要优先事项似乎是跨平台和交叉编译。 C 可以是跨平台的,但您也需要在 Windows 中编译它。如果 C 是必须的,那么你可以看看 wsl/2
  • 遗憾的是,我在 java 方面效率不高,我是一名实习生,我的一位同事让我做一个与某个网站交互的程序。如果有帮助的话,我的 c 语言几乎很好,python 也很好
  • 如果你对 Python 没问题,忘掉 C 语言,用 Python 来做吧。让它在所有平台上工作会更容易。不过,作为记录,libcurl 和 csfml 也适用于 Windows。
  • 好的,谢谢^^我会听从建议并使用python,selenium可能会很好用。

标签: c linux windows compilation


【解决方案1】:

简单的答案:不。如果您在不同平台上使用库,那是因为它们是在该操作系统上重新编译的。只要有针对该特定架构的编译器,C 标准就是跨架构的。 Windows 使用所谓的 PE(便携式可执行文件)文件格式。它基本上是每个可执行文件开头的标题,它清楚地说明了操作系统应该如何以及在内存中的何处执行该文件。另一方面,Unix 使用 ELF。 MacOS 使用 Mach-o。它们都带有关于如何执行它们的说明。因此,如果您可以在 Linux 上模拟 PE 格式,那么是的,您可以在 Linux 上运行可执行文件,但在 Windows 上编译。但是标准和跨平台库的想法是让您可以在几乎任何受支持的架构上运行您的代码。它不像 Java 那样在任何地方运行一次就可以编译。但是您必须记住,JRE 与编译器非常相似。必须为每个特定架构编译该 JRE 以理解和执行 Java 字节码。所以在任何地方编译你的代码并不是那么糟糕。

如果我没记错的话 curl 和 csfml 是跨平台库。

【讨论】:

    【解决方案2】:

    除非你有专门声称是交叉编译器的东西,否则它通常不会工作。

    而且,如果您运行的不仅仅是普通的控制台窗口/DOS 应用程序,那么您必须编写具有 Windows 特定功能的代码。打开一个窗口,添加一个按钮等,在不同的平台上会有所不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 2016-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多