为什么不能跨平台移动对象(.obj)文件?

siv*_*iva 2 c c++

为什么我们不能在OS平台上从c编译中移动.obj文件并在最后使用它来构建可执行文件?

如果我们能这样做,我们可以称C为平台独立语言,如Java吗?

小智 6

C语言 平台无关的.

编译器,对象和可执行文件生成的文件与平台有关.这是因为编译器的最终目标是仅为目标体系结构生成可执行文件,而不是为每个已知体系结构生成.

Java 文件是独立于平台的,因为Sun是唯一的Java设计者,它实际上制定了所有规则(从字节码到文件格式和VM行为),其他人都必须适应.

原生二进制格式不会发生这种情况,每个操作系统都使用其格式,编译器使其成为对象格式,每个CPU都有自己的ISA.