既然c程序编译为机器码直接操作硬件,为啥不同操作系统下需要重新编译

这个问题细说起来会很多,基础的来讲,你知道main不是程序的入口就明白了。具体到真正程序开始运行后,差别的确不大。
■网友
程序移植到Windows?,需要重新编译才能产生.exe扩展名。
■网友
从C代码到真正的操作硬件(汇编)还有一段很长的路要走,事实上是你必然会调用到系统API,因为C只能编译成操作系统可以执行的机器码,这是因操作系统而异的!
■网友
刚好正在复习这方面的内容,个人猜想是应用程序建立在操作系统之上,对硬件的操作都是通过os完成的,不同的os之间api不同,仅仅是对CPU的操作都是操作系统完成,不管是否有显式的调用系统API。所以需重新编译。


    推荐阅读