【发布时间】:2018-08-31 18:40:18
【问题描述】:
我希望制作一个跨平台软件,并通过查看编译后的 C++ 文件(即静态或动态库或应用程序)如何依赖于平台,我想知道是什么让二进制平台依赖于。
我知道处理器的指令集和使用操作系统特定的 c++ 函数使得二进制/代码平台依赖。
但是让我们假设我有 2 台 x86 机器,一台运行 linux,另一台运行 windows 和一个 C++ 代码。该代码不使用任何特定于平台的功能。为什么我的可执行文件会依赖于操作?
如果只是针对应用程序文件中的操作系统特定头文件,会有转换工具elfexe,但事实并非如此。
我错过了什么?
【问题讨论】:
-
完全不同的格式,ABI
-
这是因为可移植可执行文件的架构。
-
程序二进制文件不仅在不同的操作系统上具有不同的格式(因为加载它们的是操作系统),而且还取决于操作系统的系统功能。
-
您应该阅读此内容以获得答案:en.wikipedia.org/wiki/Application_binary_interface
-
出于同样的原因,不同的汽车需要不同的零件。
标签: c++ compilation operating-system cross-platform