如何在Linux下運行C語言程序
C語言是一個有結構化程序設計、具有變量作用域(variable scope)以及遞歸功能的過程式語言。以下是小編為大家搜索整理的如何在Linux下運行C語言程序,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!
Gedit
Gedit是一個簡單實用的文本編輯器,擁有漂亮的界面,支持語法高亮,比 Vim 更易上手。本教程將Gedit作為C代碼編輯器。
Gedit的安裝:
sudo apt-add-repository ppa:ubuntu-on-rails/ppa //添加ubuntu的`軟件源
sudo apt-get update //更新軟件列表
sudo apt-get install gedit-gmate //安裝
在當前目錄下創建一個C源文件並打開:
touch test.c
gedit test.c
可以看到gedit的窗口,輸入:
#include
#include
int main()
{
printf("Hello,Linux.n");
exit(0);
}
gedit 窗口截圖
注意:Gedit支持多種語言的高亮顯示,一般情況下能夠自動識別語言,如果識別錯誤,請在“編輯->高亮模式“下選擇C。
GCC
Linux下使用最廣泛的C/C++編譯器是GCC,大多數的Linux發行版本都默認安裝,不管是開發人員還是初學者,一般都將GCC作為Linux下首選的編譯工具。本教程毫不猶豫地使用GCC來編譯C程序。
保存文件後退出,打開終端並 cd 到當前目錄,輸入下面的命令:
gcc test.c -o test
可以直接將C代碼編譯鏈接為可執行文件。
可以看到在當前目錄下多出一個文件 test,這就是可執行文件。不像Windows,Linux不以文件後綴來區分可執行文件,Linux下的可執行文件後綴理論上是可以任意更改的。
當然,也可以分步編譯:
1) 預處理
gcc -E test.c -o test.i
在當前目錄下會多出一個預處理結果文件 test.i,打開 test.i 可以看到,在 test.c 的基礎上把stdio.h和stdlib.h的內容插進去了。
2) 編譯為彙編代碼
gcc -S test.i -o test.s
其中-S參數是在編譯完成後退出,-o為指定文件名。
3) 彙編為目標文件
gcc -c test.s -o test.o
.o就是目標文件。目標文件與可執行文件類似,都是機器能夠識別的可執行代碼,但是由於還沒有鏈接,結構會稍有不同。
3) 鏈接並生成可執行文件
gcc test.o -o test
如果有多個源文件,可以這樣來編譯:
gcc -c test1.c -o test1.o
gcc -c test2.c -o test2.o
gcc test1.o test2.o -o test
注意:如果不指定文件名,GCC會生成名為的文件,文件只是為了區分編譯後的文件,Linux下並沒有標準的可執行文件後綴名,一般可執行文件都沒有後綴名。
編譯後生成的test文件就是程序了,運行它:
./test
如果沒有運行權限,可以使用sudo命令來增加權限(注意要在Linux的分區下):
sudo cdmod test 777
對於程序的檢錯,我們可以用-pedantic、-Wall、-Werror選項:
-pedantic選項能夠幫助程序員發現一些不符合 ANSI/ISO C標準的代碼(並不是全部);
-Wall可以讓gcc顯示警告信息;
-Werror可以讓gcc在編譯中遇到錯誤時停止繼續。
這3個選項都是非常有用的。
-
關於C語言精選模擬練習題
C語言是一個有結構化程序設計、具有變量作用域(variablescope)以及遞歸功能的過程式語言。下面是小編為大家整理的關於C語言精選模擬練習題,歡迎參考~5:請編寫一個函數fun,它的功能是:比較兩個字符串的長度,(不得調用c語言提供的`求字符串長度的函數),函數返回較長...
-
C語言中friend友元函數詳細解析
友元函數是可以直接訪問類的私有成員的非成員函數。它是定義在類外的普通函數,它不屬於任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend。我們已知道類具有封裝和信息隱藏的特性。只有類的成員函數才能訪問類的私有成員,程序中的其他...
-
C++ cin輸入流詳解
標準輸入流是從標準輸入設備(鍵盤)流向程序的數據。在頭文件iostream.h中定義了cin、cout、cerr、clog4個流對象,cin是輸入流,cout、cerr、clog是輸出流。下面是小編為大家整理的C++cin輸入流詳解,歡迎參考~cin是istream類的對象,它從標準輸入設備(鍵盤)獲取數據,程...
-
C語言中遞歸函數的教學方法
導語:函數遞歸基於分治法思想,將複雜的大規模問題轉化為小規模問題進行求解,在算法設計中具有重要的理論意義和實用價值,是C語言教學的難點。下面就由小編為大家介紹一下C語言中遞歸函數的教學方法,歡迎大家閲讀!1.引言C語言是一種語法簡潔緊湊、運算符豐富、可移植...