導航:首頁 > 源碼編譯 > 編譯和載入的區別

編譯和載入的區別

發布時間:2022-11-30 05:27:10

『壹』 求教java編譯與運行的區別。

編譯只是編譯成了位元組碼,就是可執行的.class文件
運行時識別,主要是java的RTTI(運行時類型識別)機制和反射機制,而兩者之間的區別在於:
」對RTTI來說,編譯器在編譯期打開和檢查.class文件。(換句話說,我們可以用「普通」的方式調用一個對象的所有方法。),而對於反射機制來說,.class文件在編譯期是不可獲取的,所以是在運行期打開和檢查.class文件。「
但是同樣的,反射也需要載入這個類的Class對象,所以那個類的class對象對於jvm必須是可取的的,比如在本地機器上,或者通過網路取得,比如取得一串位元組串。
具體的內容可以參考《Thinking
in
java》的」類型識別「那一章,講的比較詳細的

『貳』 C++中什麼是編譯時,什麼是運行時,二者有何區別

編譯階段主要進行語法的檢查,無誤。將程序代碼轉換成目標代碼(二進製表示,打開看不懂),沒有和操作系統進行連接,不能運行。完成連接後,程序能夠進入系統運行。
運行時,一定是編譯過的,沒有語法錯誤。編譯時,沒有生成目標文件,可能有語法錯誤。

『叄』 編譯和運行有何區別>>>>>>>>>>>>>

編譯也就是計算機將你編寫的程序,編譯(也就是翻譯)成計算機可以識別的語言,而運行,就是說要執行你所編寫的這個程序,實現一定的功能,通常我們電腦上的軟體打開都可以叫做運行

『肆』 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼

Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制

『伍』 android的動態載入和靜態載入的區別

兩者區別: 一,靜態庫的使用需要: 1 包含一個對應的頭文件告知編譯器lib文件裡面的具體內容 2 設置lib文件允許編譯器去查找已經編譯好的二進制代碼 二,動態庫的使用: 程序運行時需要載入動態庫,對動態庫有依賴性,需要手動加入動態庫 三,依賴性: 靜態鏈接表示靜態性,在編譯鏈接之後, lib庫中需要的資源已經在可執行程序中了, 也就是靜態存在,沒有依賴性了 動態,就是實時性,在運行的時候載入需要的資源,那麼必須在運行的時候提供 需要的 動態庫,有依賴性, 運行時候沒有找到庫就不能運行了 四,區別: 簡單講,靜態庫就是直接將需要的代碼連接進可執行程序;動態庫就是在需要調用其中的函數時,根據函數映射表找到該函數然後調入堆棧執行。 做成靜態庫可執行文件本身比較大,但不必附帶動態庫 做成動態庫可執行文件本身比較小,但需要附帶動態庫 五: 首先糾正所謂「靜態連接就是把需要的庫函數放進你的exe之中」的說法。在真實世界中,有三個概念:Use static libary, static linked DLL, dynamic linked DLL. 多數人混淆了static libary 和 static linked DLL的概念,當然他們有似是而非的「相似之處」,比如都用到.lib,下面具體說明。 使用靜態庫(Use static libary)是把.lib和其他.obj一起build在目標文件中,目標文件可以是.exe,也可以是.dll或.oxc等。一般情況下,可以根本就沒有「對應的」.dll 文件,如C Run Time(CRT)庫。一個例子就是,寫一個main(){},build出來並不是只有幾個位元組,當然有人會說那還有exe文件頭呢?是,即使加上文件頭的尺寸,build出的執行文件仍然「莫名的大」。實際上那多出來的部分就是CRT靜態庫。姑且可以把靜態庫.lib理解成外部程序的obj文件比較合理,它包含了函數的實現。

『陸』 編譯運行編譯運行,有什麼區別

編譯:
包括編譯和鏈接兩個過程。
編譯部分,是把源文件(代碼)轉換成機器可以識別的二進制語言,這個過程是針對每一個源文件的。
鏈接,是把編譯生成的二進制文件,組合成為一個系統可以執行的可執行文件。
這兩部分整體也叫編譯。也就是說,廣義的編譯,就是把代碼,轉換成可執行文件。
運行:
把編譯出來的可執行文件,在系統中運行的過程,稱為程序的運行。
打個比方,編譯就是做飯的過程,而運行,就是吃飯。二者是完全不同的概念,是計算機軟體開發的兩個步驟。

『柒』 Java中類載入出現在哪個階段,編譯期和運行期 類載入和類裝載是一樣的嗎

使用的類,編譯/運行時都會被載入。

載入/裝載沒有區別,翻譯的詞彙選擇因人而異了

運行 javac /java 時 加上 -verbose 選項就可以看到了。

『捌』 C語言中編譯 生成 調試 測試 運行各是什麼意思有什麼區別

C語言中編譯 生成 調試 測試 運行的區別如下:

區別一:

從編譯方面來看:

編譯依賴於編譯器,英文是compile, vc中這一過程是將源代碼轉換成目標文件,如:obj文件,rc文件等。

區別二:

從生成方面來看:

生成指的是連接的過程,英文是build,依賴於鏈接器。vc中在這一階段將所有的目標文件和所有需要用到的組件組合成一個整體,例如需要生成的是windows系統下的PE可執行文件,鏈接器會依照特定格式將目標文件組合,最後生成PE格式的,exe或dll文件。

區別三:

從調試方面來看:

調試是所有或部分代碼編寫完成後,讓程序在調試器中運行,用這種手段對程序進行分析,找出並修正潛在問題。

區別四:

從運行方面來看:

運行就是讓程序在系統中運行。

(8)編譯和載入的區別擴展閱讀:

C語言的介紹:

C語言是目前流行的通用程序設計語言,是計算機專業人員和計算機愛好者開發軟體的首選開發工具。C語言源程序必須經過某種編譯工具翻譯成為目標機器語言程序才能夠在計算機上執行。

然而隨著程序編寫規模的擴大,順利編寫出正確的程序絕非一件容易的事情,早期的許多編譯工具僅僅提供翻譯功能,已滿足不了應用的要求,編程人員需要-種功能全面並高度集成的編譯環境。

程序是一段具有一定功能的代碼,編寫程序的目的是解決問題。當程序人員寫完程序後,其實並不起作用,只有當編寫的程序經過一系列的處理後,能夠解決問題時。

序才成為真正的程序,這一系列的處理過程,-般就是編輯、編譯、連接、調試與運行等。目前最成熟的C語言集成環境主要有Turbo C2.0和Turbo C 3.0( 簡稱TC30)或Borland C++3.1( 簡稱BC31)以及Visual C++ 6.0。

『玖』 編譯和全部編譯的區別是什麼

全部編譯和編譯是完全不同的概念。
1、全部編譯是指程序代碼、界面等的輸入、構建,在這期間,開發工具會對輸入的代碼進行一般的語法檢查等,在可視化以前的開發環境下,主要是指代碼的輸入、編輯。
2、編譯是指開發工具的編譯程序對編輯過的代碼進行轉換,以便生成可以執行的代碼文件,在可視化以前的開發環境下,編譯都是在編輯工作完成以後進行的。

『拾』 配置Linux內核的時候,驅動的靜態編譯和動態編譯有什麼區別

驅動的動態編譯會生成.ko文件,系統啟動後需要載入該驅動後才能使用相應設備。
而靜態編譯則直接編譯進內核,系統啟動的時候會自動載入該驅動。
靜態編譯太多驅動至內核,會導致內核體積過大,啟動時間較長。而動態編譯則比較自由靈活,需要用的時候即載入,不需要的時候即卸載。我以前在EasyARM-iMX280的學習手冊里看到寫得很清楚,你可以去看看的。

閱讀全文

與編譯和載入的區別相關的資料

熱點內容
golang調用python 瀏覽:171
hsc伺服器做raid0怎麼做 瀏覽:231
android50源代碼 瀏覽:127
程序員需要本科學位證書嗎 瀏覽:775
手機版wps許多文檔如何放到文件夾 瀏覽:687
安卓手機怎麼退出帳戶 瀏覽:767
夜神安卓模擬器怎麼刪 瀏覽:561
運行命令無法打開共享 瀏覽:524
安卓怎麼與單片機交互 瀏覽:736
linux下tcpdump 瀏覽:919
華為榮耀手機隱藏文件夾方法 瀏覽:535
python怎麼做簡單線性回歸模型 瀏覽:252
安卓系統電視是什麼 瀏覽:343
全款買了房開發商遲遲不解壓 瀏覽:812
linux退出oracle 瀏覽:652
不能截圖的app怎麼截長圖 瀏覽:307
pythonwindows窗口程序 瀏覽:621
怎麼把app投送到ipad 瀏覽:833
查找文件夾txt 瀏覽:219
服裝店用什麼雲伺服器 瀏覽:684