編譯語言大致過程。
- 預處理
宏定義展開,頭文件展開,條件編譯,同時將註釋刪除,並不檢查語法,生成.i文件 - 編譯
檢查語法,把預處理後文件編譯生成彙編文件。.s文件 - 彙編
將彙編文件生成目標文件(二進制文件),機器語言。.o文件 - 鏈接
C語言程序需要依賴各種庫,編譯後還需要把庫鏈接到最終的可執行程序中去。
源文件不能被計算機執行,需要相應的編譯器 ,得到彙編語言組成的彙編程序。(不同cpu,操作系統,編譯出的彙編代碼不同。)
不同的彙編程序經過彙編器彙編,得到計算機可運行的二進制文件,程序就可以運行了。
不可跨平臺的問題在於,不同平臺需要的編譯器不同,編譯出的彙編文件不同,
java文件在運行時,會將源文通過javac命令由編譯器編譯爲字節碼文件,這個文件是跨平臺的,java虛擬機(jvm,在java運行環境/jre中)也對應的只接收處理class文件,java虛擬機是一個通用的執行平臺(但有不同版本),不同java平臺編寫文件通過java虛擬機轉換的文件最後功能相同,因而實現在任意平臺的java程序都可以在其他平臺運行