市面上的C語言教程都從hello world開始,使用IDE進行開發。這個教程以Linux為主要開發環境,使用gcc編譯器。學習編程有編程的工具,所以把如何使用這個工具做為開始章節。學習C語言主要有四大工具,如下:
- 編輯器
Linux下編輯器有很多,有vim、emacs、gedit,還有atom和sublime text等等工具。
- 編譯器
Linux有符合ANSI C標准的編譯器gcc,其他編譯器也有,gcc最為常用。
- 調試器
和gcc相對應的gdb
- 維護器
make工具,方便對源代碼管理
而把上面的功能和在一起就是IDE(集成開發環境)。
gcc編譯器
GNU/Linux自帶gcc編譯器,gcc(GNU C Compiler)是GNU推出的強大跨平台。
gcc工作主要分四個步驟:
gcc的使用方法和shell命令一樣,如下:
gcc [選項] 文件
具體用法查看 man page 就知道了
常用的選項有
- -c
對源文件進行編譯,不鏈接,生成目標文件
- -o 文件名
將gcc處理結果保存在filename文件裡
- -g
加入調試信息,以便使用gdb進行調試
- -O[0、1、2、3]
對代碼優化等級,默認是2級
- -static
靜態鏈接
- -shared
動態鏈接
下面是gcc使用的例子,把下面代碼保存為gcctest.c文件
#include <stdio.h>
int main( void )
{
printf(“This is a gcc test!\n”);
return 0;
}
直接復制保存,使用下面的方式進行編譯,之後運行
gcc gcctest.c -o gcctest
./gcctest
這是把.c文件直接編譯成為可執行文件,直接執行了,預處理、編譯、匯編、鏈接等操作並刪除了中間文件。
我們可以分步進行。
- 預處理
預處理後生成的是.i文件,采用-E方式編譯。
gcc -E gcctest.c -o gcctest.i
- 編譯
從預處理文件編譯:
gcc -S gcctest.i -o gcctest.s
從.c代碼編譯:
gcc -S gcctest.i -o gcctest.s
- 匯編
從.c或.s從文件匯編:
gcc -c gcctest.c -o gcctest.o
gcc -c gcctest.s -o gcctest.o
也可以直接使用as:
as gcctest.s -o gcctest.o
- 鏈接
gcc gcctest.o -o gcctest
也可以直接用ld
ld gcctest.o -o gcctest
預處理文件和匯編文件點下面:
C文件的預處理(*.i)、匯編(*.s)文件