源程序必須要經過編譯嗎
⑴ 源程序是指什麼的程序代碼,它必須經過什麼或什麼轉變成用什麼表示的什麼才能
前兩題概念,不一前基慧定對!
1.指令的集合
2.必須經過編鋒棗譯和鏈接變成用二慧答進製表示的
3.(int)x
4 .4
⑵ c語言中的源程序必須經過編譯連接生成可執行程序才能運行,這句話是對不對
哥們,這么理解是對的,不過感覺有點表面。
建議看看計算機一些原理,像你說的這個問題我會想到,計算機最終只能識別二進制碼,
所以其實不管我們一切啥語言,最終都是通過編譯器編譯成二進制碼,計算機才能識別
而去運行,而c語言編寫的程序,肯定是要經過一系列的編譯,鏈接,生成可執行的文件。
在windows系統中,執行文件都是.exe為擴展名的。不過在linux系統中就不一樣了,linux
系統並不區分擴展名,所以也就無所謂什麼.exe之類的文件,只要知道最終生成可執行的
二進制文件就可以了。
⑶ 一個源程序如果不能編譯,能否直接運行,為什麼
一個源程序如果不編譯是不能運行的,就算編譯過了也不一定能運行。一個源程序必須經過編譯生成後綴為.obj目標程序,然後連接生成後綴為.exe的可執行文件方能運行。如果編譯沒有問題,只是說明沒有語法錯誤,但可能會存在一些邏輯錯誤導致程序不能運行,所以說,編譯過了也不一定能運行。
⑷ 用高級語言編寫的源程序必須經過編譯,產生目標程序後才能運行,這句話對嗎為什麼
目標程序不能運行,必須再經過連接成可執行文件才能運行。
而且像java 和c#的程序編譯後也不是目標程序。
⑸ 源程序是什麼,可執行程序又是什麼
選D可執行程序。
計算機可直接執行的是可執行程序。
源程序指的是指嘩燃未經編譯的,按照一定的程序設計語言規范書寫的,人類可讀的文本文件,即後綴為.c或者.cpp的文件,另外在經過編譯器編譯後形成目標程序,是二進制文件,但這時候程序還不能直接運行。
還需要經過鏈接,將所包含的頭文件等與自身的目標文件鏈接,最後形成可執行程序。
而匯編程序的含義與C語言程序等處於同一層概念,只是由不同的語言寫成。
可執行程序(executable program,EXE File)是可在操作系統存儲空間中浮動定位的二進制可執行程序。它可以載入到內存中,由操作系統載入並執行。擴展名為嫌蘆仿.exe,可以直接被計算機直接執行。
(5)源程序必須要經過編譯嗎擴展閱讀:
可執行程序文件格式:
1、Linux32/64位可執行文件:Linux是靠文件屬性來判斷判斷是否可執行。每個文件專門有個屬性來表示文件是否可執行。
2、16位NE X86可執行文件:
通過在文件頭添加ASCII字元串「NE」來標識。它只能運行在Windows和OS/2系統,而不能在DOS下運行。
3、16/32位X86可執行文件:
通過在文芹纖件頭添加ASCII字元串「LE」來標識。它僅用來在Windows 3.x和Windows 9x中替代VxD驅動。
4、32位線性可執行文件:
通過在文件頭添加ASCII字元串「LX」來標識。運行在OS/2 2.0以及更高版本中,也可用於某些DOS擴展。
⑹ 為什麼要對源程序進行編譯處理
要不計算祥攔機不知道你寫的是什麼,計算機只認識二進制,而源程序是給編謹褲胡程人員看的。所以你要想讓計算機認識純嫌你寫的是什麼,就必須進行編譯處理。
⑺ C 程序源代碼每次運行都要編譯連接才行嗎
不用,只要沒有修改,一次編譯連接後,可直接運行生成的exe文件即可
如果修改過了,那麼就只能重新編譯連接了
⑻ 匯編語言的源程序需要編譯嗎
匯編語言不是機器語言,肯定要先翻譯成機器語言(.obj文件),再連接成可執行文件才能被計算機執行。
如果是裸機,可以不用連接。
⑼ 高級語言編寫的源程序必須經過______才能執行
C
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。 編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
⑽ 用c語言編寫的源程序需要用編譯程序先編譯成由機器語言組成的目標程序,在經過( )後才能得到可執行程序
源代碼需經過編譯和鏈接,才可生成可執行文件。
由匯編程序生成的目標文件並不能立即就被執行,其中可能還有許多沒有解決的問題。 例如,某個源文件中的函數可能引用了另一個源文件中定義的某個符號(如變數或者函數調用等);在程序中可能調用了某個庫文件中的函數,等等。所有的這些問題,都需要經鏈接程序的處理方能得以解決。
鏈接程序的主要工作就是將有關的目標文件彼此相連接,也即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的這些目標文件成為一個能夠誒操作系統裝入執行的統一整體。
根據開發人員指定的同庫函數的鏈接方式的不同,鏈接處理可分為兩種:
(1)靜態鏈接
在這種鏈接方式下,函數的代碼將從其所在地靜態鏈接庫中被拷貝到最終的可執行程序中。這樣該程序在被執行時這些代碼將被裝入到該進程的虛擬地址空間中。靜態鏈接庫實際上是一個目標文件的集合,其中的每個文件含有庫中的一個或者一組相關函數的代碼。
(2) 動態鏈接
在此種方式下,函數的代碼被放到稱作是動態鏈接庫或共享對象的某個目標文件中。鏈接程序此時所作的只是在最終的可執行程序中記錄下共享對象的名字以及其它少量的登記信息。在此可執行文件被執行時,動態鏈接庫的全部內容將被映射到運行時相應進程的虛地址空間。動態鏈接程序將根據可執行程序中記錄的信息找到相應的函數代碼。
對於可執行文件中的函數調用,可分別採用動態鏈接或靜態鏈接的方法。使用動態鏈接能夠使最終的可執行文件比較短小,並且當共享對象被多個進程使用時能節約一些內存,因為在內存中只需要保存一份此共享對象的代碼。但並不是使用動態鏈接就一定比使用靜態鏈接要優越。在某些情況下動態鏈接可能帶來一些性能上損害。