C語言中文網 目錄
首頁 > GCC編譯器 閱讀:2,172

GCC分步驟編譯C語言程序

上節《GCC編譯C語言程序完整演示》講解的是通過gcc命令一次性完成編譯和鏈接的整個過程,這樣最方便,大家在學習C語言的過程中一般都這么做。實際上,gcc命令也可以將編譯和鏈接分開,每次只完成一項任務。

本節將涉及到C語言程序的生成原理,如果你不了解,請轉到《C語言入門教程》學習。

本節以下面的C語言代碼為例進行演示:
#include <stdio.h>
int main()
{
    puts("C語言中文網");
    return 0;
}

1) 編譯(Compile)

將源文件編譯成目標文件需要使用-c選項,例如:

gcc -c main.c

就將 main.c 編譯為 main.o。打開 demo 目錄,就會看到 main.o:
對于微軟編譯器(內嵌在 Visual C++ 或者 Visual Studio 中),目標文件的后綴為.obj;對于 GCC 編譯器,目標文件的后綴為.o。

一個源文件會生成一個目標文件,多個源文件會生成多個目標文件,源文件數目和目標文件數目是一樣的。通常情況下,默認的目標文件名字和源文件名字是一樣的。

如果希望自定義目標文件的名字,那么可以使用-o選項,例如:

gcc -c main.c -o a.o

這樣生成的目標文件的名字就是 a.o。

2) 鏈接(Link)

gcc命令后面緊跟目標文件的名字,就可以將目標文件鏈接成為可執行文件,例如:

gcc main.o

就將 main.o 鏈接為 a.out。打開 demo 目錄,就會看到 a.out。

gcc命令后面緊跟源文件名字或者目標文件名字都是可以的,gcc命令能夠自動識別到底是源文件還是目標文件:如果是源文件,那么要經過編譯和鏈接兩個步驟才能生成可執行文件;如果是目標文件,只需要鏈接就可以了。

使用-o選項仍然能夠自定義可執行文件的名字,例如:

gcc main.o -o main.out

這樣生成的可執行文件的名字就是 main.out。

下面是一個完整的演示:

$ cd demo
$ gcc -c main.c
$ gcc main.o
$ ./a.out
C語言中文網

在控制臺上的真實效果為:

精美而實用的網站,提供C語言、C++、STL、Linux、Shell、Java、Go語言等教程,以及socket、GCC、vi、Swing、設計模式、JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo