⑴ c語言中編譯後得到的目標文件為什麼不能直接運行,必須連接後才能運行
一編譯單元(一個c文件)就會得到一個目標文件,而最終程序是一個EXE。所以需要鏈接。
同時鏈接需要按照操作系統的可執行文件格式要求組織。
⑵ 編譯程序和解釋程序均能產生目標程序嗎
不能
因為:編譯程序能產生目標程序而解釋程序則不能
補充:解釋程序也稱為解釋器,它或者直接解釋執行源程序,或者將源程序翻譯成某種中間表示形式後再加以執行;編譯程序(編譯器)則是將源程序翻譯成目標語言程序,然後在計算機上運行目標程序。兩種語言處理程序的根本區別是:在編譯方式下,機器上運行的是與源程序等價的目標程序,源程序和編譯程序都不再參與目標程序的執行過程,而在解釋方式下,解釋程序和源程序(或某種等價表示)要參與到程序的運行過程中,運行程序的控制權在解釋程序。解釋器翻譯源程序時不生成獨立的目標程序,而編譯器則將源程序翻譯成獨立的目標程序。
⑶ 編程是幹嘛的
編程的目的是為了使計算機能夠理解人的意圖,使得計算機能夠根據人的指令一步一步去工作,將需解決問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,完成某種特定的任務。編程是人和計算體系之間交流的過程,因為計算機對除機器語言以外的源程序不能直接識別、理解和執行,所以編程就是對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。編程有兩種方式:解釋方式和編譯方式。
1、解釋方式:計算機對高級語言書寫的源程序一邊解釋一邊執行,不能形成目標文件和執行文件。
2、編譯方式:通過一個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的源程序轉換為用二進制代碼表示的目標程序。收起
⑷ 為什麼我用gcc編譯c程序到最後無法自動生成一個exe程序
gcc 是 Linux 系統下面的 C 語言編譯器。它和 WINDOWS 系統下面的 Microsoft Visual Studio C++ 6.0 不同,在 WINDOWS 系統下面對任何的一個源程序,經編譯、鏈接、到最終生成的所有可執行程序必定都是以 *.exe 結尾的,*.exe 是 WINDOWS 系統下面的可執行程序的後綴;而 gcc 對 C 語言進行編譯,並沒有規定可執行程序的具體名字到底是什麼。舉例如下:
$gcc my_program.c <cr>
如果在命令行中,沒有帶任何參數的話,如果 C 語言源程序沒有任何語法錯誤的話,那麼生成的預設的可執行文件就是:a.out;
$gcc my_program.c -o my_runfile <cr>
如果在命令行中,指定:-o 參數,代表對 my_program.c 進行編譯後,生成的可執行文件名為:my_runfile。
同理,在進行命令行編譯過程中,只要指定了 -o 參數,那麼你後面的可執行文件名,就隨便由你自己決定了,這個就沒有一定之規了。
⑸ 用高級語言編寫的源程序必須經過編譯,產生目標程序後才能運行,這句話對嗎為什麼
目標程序不能運行,必須再經過連接成可執行文件才能運行。
而且像java 和c#的程序編譯後也不是目標程序。
⑹ 編譯程序和解釋程序有何區別
編譯程序能生成目標程序,而解釋程序不能。