首页 > 解决方案 > 如果我使用 linux 库在 C 中编译程序,我可以在 Windows 上使用它吗?

问题描述

我只是想知道我是否可以使用我在 Windows 上使用 linux 库在 c 中编译的程序,以及是否有可能如何将它变成exe可以像 firefox 或其他软件一样启动的程序。

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

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

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

标签: clinuxwindowscompilation

解决方案


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

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


推荐阅读