gpt4 book ai didi

c - 是什么让程序成为 Linux 或 Windows?

转载 作者:行者123 更新时间:2023-11-30 20:06:14 26 4
gpt4 key购买 nike

过去几周我一直在学习 C,并在基于 Fedora 的虚拟机上完成了这个简单的突破游戏。

我想向 Windows 上的 friend 展示它。据我所知,您不能简单地在 Windows 上运行 Linux 程序,这是有道理的。

我的问题是,是什么让一个程序成为 Linux 或 Windows 程序?这是你编写程序的方式吗?编辑?操作系统?你使用的编译器?

如果你在 Linux 上,你能专门为 Windows 制作一个程序吗?怎么办?

最佳答案

粗略地说,不同的操作系统读取不同二进制格式的可执行文件,而这些格式并不兼容。因此,当您从源代码构建游戏时,您是在为给定平台构建,并使用该平台的格式。您的猜测是正确的,您正在为其构建的平台(也称为目标平台)不一定是您正在构建的平台(此过程称为交叉编译)。

此外,通常情况下某些源代码无法翻译到所有平台。例如,调用仅在 Windows 上可用的库文件的代码无法针对非 Windows 系统进行编译(或交叉编译)。每个操作系统创建用户界面(例如窗口、触摸屏页面等)的方式不仅在二进制级别不同,而且在源代码级别也常常不同。

第二段的问题可以通过跨平台库(如 GTK、OpenGL、OpenCL 等)部分缓解,这些库提供相同的机制,无论您的目标操作系统如何。他们通常通过在幕后使用条件编译和其他“技巧”来实现这一点。

第一段的问题比较困难,但是也出现了解决方法,利用一些其他二进制格式(Java 存档、CLR 程序集等)。这些格式在任何方面都没有什么特殊之处。诀窍在于它们不应该被任何操作系统直接读取 - 相反,它们被提供给另一种机制(JVM、CLI 等),该机制已经由某人针对多个平台(包括 Windows)多次构建和 Linux),并且该机制通常从通用二进制文件管理这些程序的执行,而不需要您针对任何一个特定平台。他们通常通过在代码运行之前自动编译代码来实现这一点(这个过程称为即时编译)。

关于c - 是什么让程序成为 Linux 或 Windows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com