⑴ c語言中的源程序必須經過編譯連接生成可執行程序才能運行,這句話是對不對
哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而c語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。
⑵ 高級語言編寫的程序轉換為計算機能直接執行的目標程序,必須經過A編輯B編譯C匯編
高級語言編寫的程序轉換為計算機能直接執行的目標程序,必須經過編譯,此題選B。
(2)源程序必須經過編譯後嗎擴展閱讀:
編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序。
然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執行,並不產生目標程序。
利用編譯程序從源語言編寫的源程序產生目標程序的過程。 用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
參考資料來源:網路-編譯
參考資料來源:網路-高級語言
⑶ 用c語言編寫的源程序需要用編譯程序先編譯成由機器語言組成的目標程序,在經過( )後才能得到可執行程序
源代碼需經過編譯和鏈接,才可生成可執行文件。
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。 例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠誒操作系統裝入執行的統一整體。
根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者一組相關函數的代碼。
(2) 動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
對於可執行文件中的函數調用,可分別採用動態鏈接或靜態鏈接的方法。使用動態鏈接能夠使最終的可執行文件比較短小,並且當共享對象被多個進程使用時能節約一些內存,因為在內存中只需要保存一份此共享對象的代碼。但並不是使用動態鏈接就一定比使用靜態鏈接要優越。在某些情況下動態鏈接可能帶來一些性能上損害。
⑷ 開發一個c語言程序要經過哪四個步驟
開發一個C語言程序需要經過的四個步驟:編輯、編譯、連接、運行。
C語言程序可以使用在任意架構的處理器上,只要那種架構的處理器具有對應的培羨纖C語言編譯器和庫,然後將C源代碼編配仿譯、連接成目標二進制文件之後即可運行。
1、預處理:輸入源程序並保存(.C文件)。
2、編譯:將源程序翻譯為目標文件(.OBJ文件)。
3、鏈接:將目標文件生成可執行文件(.EXE文件)。
4、運行:執行.EXE文件,得到運行結果。
(4)源程序必須經過編譯後嗎擴展閱讀:
C語言代碼變為程序的幾個階段:
1、首先是源代碼文件test.c和相關的頭文件,如stdio.h等被預處理器cpp預處理成一個.i文件。經過預編譯後的.i文件不包含任何宏定義,因為所有的宏已經被展開,並且包含的文件也已經被插入到.i文件中。
2、編譯過程就是把預處理完的文件進行一系列的詞法分析、語法分析、語義分析以及優化後產生相應的匯編代碼文件,這個過程往往是我們所說的整個程序的構建的核心部分,也是最復雜的部分之一。派胡
3、匯編器不直接輸出可執行文件而是輸出一個目標文件,匯編器可以調用ld產生一個能夠運行的可執行程序。即需要將一大堆文件鏈接起來才可以得到「a.out」,即最終的可執行文件。
4、在鏈接過程中,對其他定義在目標文件中的函數調用的指令需要被重新調整,對實用其他定義在其他目標文件的變數來說,也存在同樣問題。
參考資料來源:網路-c語言
⑸ 用高級語言編寫的源程序必須經過編譯,產生目標程序後才能運行,這句話對嗎為什麼
目標程序不能運行,必須再經過連接成可執行文件才能運行。
而且像java 和c#的程序編譯後也不是目標程序。
⑹ C語言的源程序必須通過什麼和什麼才能被計算機執行
編譯和鏈接。
每一個C語言程序必須要經過編譯和鏈接才能被計算機執行,編譯是將C源碼翻譯成機器碼,鏈接是將將二進制目標文件裝配成一個具有特定格式的二進制可執行文件,比如Windows平台上是PE格式,一般以.exe為擴展名。
一個C語言程序從源碼到計算機系統可以執行,更細致的劃分為:預處理——編譯——匯編——鏈接。預處理是對C語言源碼進行文本處理,編譯階斷是將C源碼經C編譯器生成匯編代碼,匯編階斷是將匯編代碼經匯編器生成二進制機器碼文件。這兩個合攏起來,籠統的可以叫做編譯階斷。