項目 | 內容 |
---|---|
這個作業屬於哪個課程 | <班級課程的主頁鏈接 > |
這個作業的要求在哪里 | <作業要求鏈接接地址 > |
學號-姓名 | <17043226-易天儒> |
作業學習目標 | <1. 了解Linux系統C語言編程環境;2. 學習Linux環境C語言開發步驟> |
實驗內容
1.安裝C語言開發環境
1 | sudo apt install build-essential
如果安裝沒有問題,接下來查看gcc的版本信息,大家也可以先查看gcc版本信息如果提示沒有gcc再進行安裝,因為有的同學可能早就安裝了gcc
查看make版本信息
1 | make -v
如果上面沒有問題,我們就可以使用gcc對C語言程序進行編譯鏈接等操作
2.簡單C語言練習
1)首先我們通過man命令查看幫助文檔,如果我們不清楚一些命令的操作,我們可以通過man命令來查看幫助。如:
1 | man gcc
這里簡單列出一些通過man命令查看gcc幫助文檔的信息,man幫助文檔通常都是英文的,大家可以安裝中文的幫助文檔,不過通常英文的要准確一點。
2)命令行模式簡單C語言編譯鏈接等操作
我們可以通過vim編輯器編寫一個最簡單的C語言程序,如寫一個輸出自己學號的程序。先創建一個文件夾,然后進入該新創建的文件夾
我們輸入完了源程序,接下來我們進行C語言程序編譯的四個階段,預編譯,編譯,匯編,鏈接
a) 預編譯
我們可以用vim打開test.i文件來查看文件內容,也可以用命令來查看
這里大家自行查看文件內容並理解。
b) 編譯
同樣的我們可以用vim打開test.s文件來查看內容,也可以用命令,如cat
因為預編譯和編譯得到的文件都是文本文件,所以我們可以用vim打開查看文件內容。
c) 匯編
這里生成的不是文本文件了,是二進制文件,我們可以通過objdump命令來反匯編該文件來分析文件內容
d) 鏈接
可執行文件是二進制文件,同樣需要用objdump命令來反匯編該文件分析文件內容
1 | objdump -d test
這里反匯編輸出內容較多,我只截圖main函數部分,大家可以與test.o反匯編的內容進行對比分析。
**e) 運行
3) 多文件編譯
我們在exp4文件夾下面再建一個文件夾mfc(multi-fifiles compile)
在該文件夾下面創建5個文件,文件名分別如下:
每個文件的內容分別如下:
完成上面的代碼輸入,接下來我們進行編譯,對於多文件編譯,我們可以一次編譯鏈接生成可執行文
件,也可以分別編譯每個C文件,最后再進行鏈接得到可執行文件。
請說明兩種方法的區別?
答:前者為一次性編譯,可以直接使用源文件鏈接生成可執行文件。后者為分別編譯,會各自生成目標文件,須使用目標文件進行連接生成可執行文件。
接下來我們編寫一個簡單的Makefifile,通過make工具幫助我們進行編譯。在當前文件夾編寫一個Makefifile文件
注意這里每個gcc以及最后的rm前面都是有一個tab
現在我們可以直接在終端輸入make就可以進行編譯鏈接操作