當前位置:首頁 » 編程軟體 » 源程序只有經過編譯

源程序只有經過編譯

發布時間: 2022-01-08 19:35:33

㈠ 用c語言編寫的源程序需要用編譯程序先編譯成由機器語言組成的目標程序,在經過( )後才能得到可執行程序

源代碼需經過編譯和鏈接,才可生成可執行文件。
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。 例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠誒操作系統裝入執行的統一整體。
根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者一組相關函數的代碼。
(2) 動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
對於可執行文件中的函數調用,可分別採用動態鏈接或靜態鏈接的方法。使用動態鏈接能夠使最終的可執行文件比較短小,並且當共享對象被多個進程使用時能節約一些內存,因為在內存中只需要保存一份此共享對象的代碼。但並不是使用動態鏈接就一定比使用靜態鏈接要優越。在某些情況下動態鏈接可能帶來一些性能上損害。

㈡ c++源程序只有在編譯上運行,,為什麼我可以下載c++編的軟體不用在編譯器上運行了

源程序本身只是代碼,不能運行,但是它可以先被編譯成可執行文件再運行,你下載的軟體都是源代碼編譯成的可執行文件。

㈢ C語言源程序文件經過編譯連接之後生成一個後綴為_____的文件。

如果只生成一個文件,那麼這個題目答案是B。編譯(compile)後生成目標文件,後綴:.obj。也就是機器碼。

然後鏈接器(Linker) 連接生成可執行文件,後綴:.exe。最後運行命令(go),直接運行.exe文件。

(3)源程序只有經過編譯擴展閱讀:

簡單講,編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。

一個現代編譯器的主要工作流程:源代碼(source code) →預處理器(preprocessor) →編譯器(compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)

高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。

編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。

源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言。

而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

對於C#、VB等高級語言而言,此時編譯器完成的功能是把源碼(SourceCode)編譯成通用中間語言(MSIL/CIL)的位元組碼(ByteCode)。

最後運行的時候通過通用語言運行庫的轉換,編程最終可以被CPU直接計算的機器碼(NativeCode)。

㈣ c語言中的源程序必須經過編譯連接生成可執行程序才能運行,這句話是對不對

哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而c語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。

㈤ C語言的源程序必須通過什麼和什麼才能被計算機執行

編譯和鏈接。

每一個C語言程序必須要經過編譯和鏈接才能被計算機執行,編譯是將C源碼翻譯成機器碼,鏈接是將將二進制目標文件裝配成一個具有特定格式的二進制可執行文件,比如Windows平台上是PE格式,一般以.exe為擴展名。

一個C語言程序從源碼到計算機系統可以執行,更細致的劃分為:預處理——編譯——匯編——鏈接。預處理是對C語言源碼進行文本處理,編譯階斷是將C源碼經C編譯器生成匯編代碼,匯編階斷是將匯編代碼經匯編器生成二進制機器碼文件。這兩個合攏起來,籠統的可以叫做編譯階斷。

㈥ 一個C語言源程序經過編譯後就可以執行了 這句話對嗎

對的,C語言是先編譯後執行,一般只要不出錯誤,編譯完就可以執行力。有時候還要考慮是否跨平台。

㈦ 用高級語言編寫的源程序,要轉換為與其等價的目標程序,必須經過 編譯。編譯和解釋的區別是什麼啊

高級語言編寫的源程序就是你直接寫的代碼,計算機讀不懂。
編譯你直接寫的代碼【源程序】會使源程序變成另外一種代碼:匯編代碼【最底層的源程序,所以單獨分成一類】然後,匯編代碼計算機業讀不懂,但是他可以被方便的轉換為計算機讀得懂的010010101...這種代碼,這種代碼就是你要得到的東西【程序文件】,就是目標程序。

㈧ 高級語言編寫的源程序必須經過______才能執行

C
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。 編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。

㈨ 用 C 語言編寫的源文件經過編譯,若沒有產生編譯錯誤,則系統將( )。

答案是錯誤的,系統將生成目標文件,選B。因為C語言中編譯程序是把一個源程序翻譯成目標程序的工作過程。這一過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。在語法分析過程中發現有語法錯誤,給出提示信息,沒有錯誤則生成目標文件。

C語言通過匯編把匯編語言代碼翻譯成目標機器指令。對於被翻譯系統處理的每一個C語言源程序,都將最終經過這一處理而得到相應的目標文件。目標文件中所存放的也就是與源程序等效的目標的機器語言代碼。

(9)源程序只有經過編譯擴展閱讀

C語言的源文件成為目標文件的過程:

1、源文件經過預處理,生成.i的文件 (預處理器cpp)。

2、將預處理後的文件轉換成匯編語言,生成文件.s文件。

3、從匯編變為目標代碼(機器代碼)生成.o(.obj)的文件(匯編器as)。

4、連接目標代碼,生成可執行程序(連接器ld)。

㈩ 匯編源程序經過編譯後是什麼誰能提供,我想看一下。謝謝

匯編程序編寫的一般過程:

1、編輯:EDIT 文件名.ASM

2、匯編:MASM 文件名;
用.ASM(源文件)生成.OBJ(目標文件),
也可生成.LST(列表)、.CRF(交叉引用)

3、連接:LINK 文件名;
用.OBJ文件生成.EXE(可執行文件)
也可生成.MAP(存儲映象),
還可使用.LIB(庫文件)

4、調試:DEBUG 文件名.EXE
按每個模塊(子程序)的輸入輸出關系檢查

即編譯後生成obj文件,鏈接後生成exe文件

熱點內容
副武器腳本 發布:2024-09-21 05:37:30 瀏覽:126
隱藏頻道密碼是多少 發布:2024-09-21 05:32:21 瀏覽:121
觸動精靈腳本製作教程 發布:2024-09-21 05:13:14 瀏覽:399
自己編譯autojs 發布:2024-09-21 05:09:40 瀏覽:358
我的世界電腦版無政府伺服器 發布:2024-09-21 04:55:36 瀏覽:836
時間伺服器和筆記本電腦同步 發布:2024-09-21 04:48:04 瀏覽:762
無許可權訪問工作組的計算機 發布:2024-09-21 04:26:31 瀏覽:476
為什麼ipad需要密碼解鎖 發布:2024-09-21 04:06:22 瀏覽:211
mariadb存儲過程 發布:2024-09-21 03:56:05 瀏覽:515
壓縮殼脫殼機 發布:2024-09-21 03:14:33 瀏覽:94