c - 如果我使用 linux 库在 C 中编译程序,我可以在 Windows 上使用它吗?
问题描述
我只是想知道我是否可以使用我在 Windows 上使用 linux 库在 c 中编译的程序,以及是否有可能如何将它变成exe
可以像 firefox 或其他软件一样启动的程序。
我看到可以使用交叉编译器来创建.exe
文件,但我使用像libcurl
or之类的库csfml
(为 linux 使用而下载的)。
如果你有什么建议我很感兴趣。
TLDR:我可以在 linux 上使用 .exe 中专用 windows 使用的 linux 库编译吗?如何?
解决方案
简单的答案:不。如果您在不同平台上使用库,那是因为它们正在该操作系统上重新编译。只要有针对该特定架构的编译器,C 标准就是跨架构的。Windows 使用所谓的 PE(便携式可执行文件)文件格式。它基本上是每个可执行文件开头的标题,它清楚地说明了操作系统应该如何以及在内存中的何处执行该文件。另一方面,Unix 使用 ELF。MacOS 使用 Mach-o。它们都带有关于如何执行它们的说明。因此,如果您可以在 Linux 上模拟 PE 格式,那么是的,您可以在 Linux 上运行可执行文件,但在 Windows 上编译。但是标准和跨平台库的想法是让您可以在几乎任何受支持的架构上运行您的代码。它' s 在任何地方运行一次都不会编译,就像 Java 一样。但是您必须记住,JRE 与编译器非常相似。必须为每个特定架构编译该 JRE 以理解和执行 Java 字节码。所以在任何地方编译你的代码并不是那么糟糕。
如果我没记错的话 curl 和 csfml 是跨平台库。
推荐阅读
- angular - 如何在Angular中的同一字段中显示相应类中的字段名称
- reactjs - 如何在 react-navigation 5 中从当前屏幕更新以前的屏幕参数
- asp.net-core - 返回字符串时调用 Http.PostAsync 时应用程序停止工作
- php - 如何使用 mPDF 快速高效地编写大型 PDF?
- makefile - qmake自动生成的Makefile中的混淆变量
- jsf - p:selectOneMenu 在按 F5 时没有正确刷新
- c# - 如何在 c# 中使用存储过程将对象列表保存到具有多对多关系的数据库中?
- python - 将字典列表作为 csv 直接写入 S3
- python - 未在 Docker 容器/映像中创建 venv 目录
- javascript - 使用用户语言环境访问 json 表中的良好语言环境