❶ 在linux里,c程序的編輯、編譯、調試的詳細步驟是什麼
(1)用工具寫好C程序...比如vi
(2)打開終端,進入你存放C語言代碼的路徑 例如: cd /opt/
(3)gcc a.c -o abc 意思是:把你的a.c編譯成abc可執行文件
(4)在當前目錄終端下 運行生成的abc,例如: ./abc 前面的.不要掉了
後面可以用gdb進行調試,你可以自己去學習...這是最基本的!!
❷ 用c語言寫程序,同樣的代碼,為什麼編譯時間每次都不一樣
這個編譯器內部有預編譯的東西,所以時間不一樣,而且計算機的內存,後台進程不一樣,時間也就不一樣了
❸ C程序的開發分為哪些步驟,這些步驟可以省略或互換嗎
C程序的開發一般可以分為以下幾個步驟:
規劃階段:對希望程序要做什麼有一個清晰的想法,考慮程序需要的信息,程序需要進行的計算和操作,以及程序應該向你報告的信息。
設計階段:決定程序要如何完成它,用戶界面應該是怎麼樣的,程序應該如何組織,目標用戶是誰,有多長的時間來完成實現這個程序等等。
編寫代碼階段:將設計構思轉變為C語言,通常需要使用文本編輯器來創建一種稱為源代碼的文件,該文件包含程序設計的C實現形式。
編譯階段:編譯源代碼,編譯細節取決於編程環境。編譯器也會檢查程序是否為有效的C語言程序。
運行階段:編譯器生成的可執行文件就是打開之後可以直接能夠運行的文件,通常在操作系統中雙擊文件或者右鍵打開就可以運行。
測試和調試階段:測試和調試程序,看程序是否按照預期進行。
維護和修改階段:根據用戶反饋或者需求變更進行程序的維護和修改。
這些步驟在大多數情況下是不能省略或互換的。比如,如果你沒有進行清晰的規劃和設計,你的代碼可能會變得混亂且難以維護。如果你沒有進行編寫代碼,那麼你的程序就無法實現你的規劃和設計。如果你沒有進行編譯和測試,你可能會在運行時遇到各種錯誤。因此,這些步驟通常是有序進行的,每一步都對開發高質量的程序至關重要。
❹ C語言編譯的時候會不會先生成中間語言
C語言編譯時,會生成中間語言叫做匯編語言,再由匯編生成機器語言!同時,C語言程序編譯的過程經過4個階段:預處理(Preprocessing)、編譯(Compilation)、匯編(Assembly)、鏈接(Linking)。
1)預處理階段在該階段主要完成對源代碼的預處理工作,主要包括對宏定義指令,頭文件包含指令,預定義指令和特殊字元的處理,如對宏定義的替換以及文件頭中所包含的文件中預定義代碼的替換等,總之這步主要完成一些替換工作,輸出是同源文件含義相同但內容不同的文件。
2)編譯、優化階段編譯就是將第一階段處理得到的文件通過詞法語法分析等轉換為匯編語言。優化包括對中間代碼的優化,如刪除公共表達式,循環優化等;和對目標代碼的生成進行的優化,如如何充分利用機器的寄存器存放有關變數的值,以減少內存訪問次數。
3)匯編階段將匯編語言翻譯成機器指令
4)鏈接階段鏈接階段的主要工作是將有關的目標文件連接起來,即將在一個文件中引用的符號同該符號在另外一個文件中的定義連接起來,使得所有的目標文件成為一個能夠被操作系統裝入執行的統一整體。
具體詳情可以參照:
http://wenku..com/link?url=-
❺ C語言中 ,一個語句執行一般(家用PC)需要多少時間
這個需要分情況來看。
1.C語言源程序通過預處理然後編譯,產生匯編代碼,不同的匯編代碼和指令有不同的執行時間。
2.一個指令的執行時間,用其所需要的指令周期(執行一條指令所需要的時間)來衡量。對於單位元組指令,就是一個讀取-執行周期(fetch-execute cycle),對於多位元組指令,還需要更多的指令周期。
3.一個指令周期,一般是由若干個機器周期(完成一次基本操作需要的時間,比如獲取變數在RAM當中的地址)組成。
4.再一個,時鍾周期,這個可以形象一點地和我們通常所說的主頻聯系起來,比如CPU核心的主頻是2.5GHz,則時鍾周期為0.4ns,這個是計算機當中最小的時間計量單位。一個機器周期由若干個時鍾周期組成。
綜上所述,你的問題沒有明確的答案。這取決於你的CPU的主頻,執行的是何種類型的C語言語句,是否編譯器有對其進行優化。
❻ C語言編譯原理是什麼
編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。
1、預處理階段:
主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)
2、匯編階段:
插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。
3、編譯階段:
將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。
4、鏈接階段:
在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello
world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。
❼ c語言從main開始執行,那編譯也是從main開始嗎
編譯不是從main函數開始的。編譯工程:先編譯預處理命令,也就是#include,#defined,#ifndef。。。的預處理命令。然後為全局變數分配空間,才編譯main函數。