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

GCC編譯C語言程序完整演示

GCC 僅僅是一個編譯器,沒有界面,必須在命令行模式下使用。通過gcc命令就可以將源文件編譯成可執行文件。

GCC 既可以一次性完成C語言源文件的編譯,也可以分步驟完成。本節將完整演示如何一次性完成源文件的編譯(初學者也經常會這么做),下節將演示分步驟編譯源文件。

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

1) 生成可執行程序

最簡單的生成可執行文件的寫法為:

$ cd demo  #進入源文件所在的目錄
$ gcc main.c  #在 gcc 命令后面緊跟源文件名

#表示注釋,讀者可以不寫,我寫上是為了讓讀者明白每個命令的含義。#Shell 中的注釋格式。
打開 demo 目錄,會看到多了一個名為 a.out 的文件,這就是最終生成的可執行文件,如下圖所示:
這樣就一次性完成了編譯和鏈接的全部過程,非常方便。
注意:不像 Windows,Linux 不以文件后綴來區分可執行文件,Linux 下的可執行文件后綴理論上可以是任意的,這里的.out只是用來表明它是 GCC 的輸出文件。不管源文件的名字是什么,GCC 生成的可執行文件的默認名字始終是a.out。
如果不想使用默認的文件名,那么可以通過-o選項來自定義文件名,例如:

$ gcc main.c -o main.out

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

因為 Linux 下可執行文件的后綴僅僅是一種形式上的,所以可執行文件也可以不帶后綴,例如:

$ gcc main.c -o main

這樣生成的可執行程序的名字就是main。

通過-o選項也可以將可執行文件輸出到其他目錄,并不一定非得在當前目錄下,例如:

$ gcc main.c -o ./out/main.out

或者

$ gcc main.c -o out/main.out

表示將可執行文件輸出到當前目錄下的out目錄,并命名為main.out。./表示當前目錄,如果不寫,默認也是當前目錄。
注意:out 目錄必須存在,如果不存在,gcc 命令不會自動創建,而是拋出一個錯誤。

2) 運行可執行程序

上面我們生成了可執行程序,那么該如何運行它呢?很簡單,在控制臺中輸入程序的名字就可以,如下所示:

$ ./a.out

./表示當前目錄,整條命令的意思是運行當前目錄下的 a.out 程序。如果不寫./,Linux 會到系統路徑下查找 a.out,而系統路徑下顯然不存在這個程序,所以會運行失敗。
所謂系統路徑,就是環境變量指定的路徑,我們可以通過修改環境變量添加自己的路徑,或者刪除某個路徑。很多時候,一條 Linux 命令對應一個可執行程序,如果執行命令時沒有指明路徑,那么就會到系統路徑下查找對應的程序。
輸入完上面的命令,按下回車鍵,程序就開始執行了,它會將輸出結果直接顯示在控制臺上,如下所示:

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

下圖演示了在控制臺上的實際效果:
如果程序在其它目錄下,運行程序時還要帶上目錄的名字,例如:

$ ./out/main.out

或者

$ out/main.out

這個時候加不加./都一樣,Linux 能夠識別出out是一個目錄,而不是一個命令,它默認會在當前路徑下查找該目錄,而不是去系統路徑下查找,所以不加./也不會出錯。

注意,如果程序沒有執行權限,可以使用sudo命令來增加權限,例如:

$ sudo chmod 777 a.out

完整的演示

為了讓讀者有一個更加全面的認識,我們不妨將上面兩部分的內容連接起來,完整的演示一下從編輯源文件到運行可執行程序的全過程:

$ cd demo  #進入源文件所在目錄
$ touch main.c  #新建空白的源文件
$ gedit main.c  #編輯源文件
$ gcc main.c  #生成可執行程序
$ ./a.out  #運行可執行程序
C語言中文網
$   #繼續等待輸入其它命令

下圖是在控制臺上的實際效果:

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

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

底部Logo