Linux下的GCC實用粗談

2021-08-14 20:13:29 字數 3168 閱讀 5085

gcc(gnu c compiler)是gnu推出的功能強大、效能優越的多平台編譯器,是gnu的代表作之一。

1.一般用法

[klaus@localhost my_usual]$ clear

[klaus@localhost my_usual]$ ll

total 4

-rw-rw-r--. 1 klaus klaus 99

jan2019:

33 hello.c

[klaus@localhost my_usual]$ cat hello.c

#include

int main(int argc ,char **argv)

[klaus@localhost my_usual]$ gcc hello.c -o hello

[klaus@localhost my_usual]$ ll

total 12

-rwxrwxr-x. 1 klaus klaus 4647

jan2020:

04 hello

-rw-rw-r--. 1 klaus klaus 99

jan2019:

33 hello.c

[klaus@localhost my_usual]$ ./hello

hello world!

[klaus@localhost my_usual]$

2.優化編譯,提高效能
[klaus@localhost my_usual]$ gcc -o hello.c -o hello
3.新增檔案路徑

gcc在系統預設的頭檔案目錄(如/usr/include)中搜尋相應的檔案,如果要編譯的標頭檔案不在裡面,可通過-i告訴編譯在哪!

[klaus@localhost my_usual]$ ll

total 8

-rw-rw-r--. 1 klaus klaus 97

jan2020:

20 hello.c

drwxrwxr-x. 2 klaus klaus 4096

jan2020:

21include

[klaus@localhost my_usual]$ cd include/

[klaus@localhost

include]$ ll

total 4

-rw-rw-r--. 1 klaus klaus 18

jan2020:

21 test.h

[klaus@localhost

include]$ cat test.h

#include"stdio.h"

[klaus@localhost

include]$ cd ..

[klaus@localhost my_usual]$ cat hello.c

#include"test.h"

int main(int argc ,char **argv)

[klaus@localhost my_usual]$ gcc hello.c

hello.c:1:

17:error: test.h:

no such file or directory

hello.c:

in function 『main』:

hello.c:4:

warning: incompatible implicit declaration of built-in function 『printf』

[klaus@localhost my_usual]$ gcc hello.c -i ./include/ -o hello

[klaus@localhost my_usual]$ ll

total 16

-rwxrwxr-x. 1 klaus klaus 4647

jan2020:

24 hello

-rw-rw-r--. 1 klaus klaus 97

jan2020:

20 hello.c

drwxrwxr-x. 2 klaus klaus 4096

jan2020:

21include

[klaus@localhost my_usual]$ ./hello

hello world!

4.警告處理

1.不顯示警告

[klaus@localhost my_usual]$ cat hello.c

#include "stdio.h"

int main(int argc ,char **argv)

[klaus@localhost my_usual]$ gcc hello.c -o hello

hello.c: in function 『main』:

hello.c:4: warning: initialization makes integer from pointer without a cast

[klaus@localhost my_usual]$ gcc -w hello.c -o hello

[klaus@localhost my_usual]$ ./hello

hello world!

[klaus@localhost my_usual]$ ll

2.顯示所有警告
[klaus@localhost my_usual]$ gcc -wall hello.c -o hello
5.巨集處理選項
-d+巨集名稱

[klaus@localhost my_usual]$ cat hello.c 

#include "stdio.h"

int main(int argc ,char **argv)

[klaus@localhost my_usual]$ gcc hello.c

[klaus@localhost my_usual]$ ./a.out

[klaus@localhost my_usual]$ gcc -dpre_deal hello.c

[klaus@localhost my_usual]$ ./a.out

hello world!

[klaus@localhost my_usual]$

linux 下gcc的使用

在linux系統中,可執行檔案沒有統一的字尾,系統從檔案的屬性來區分可執行檔案和不可執行檔案。而gcc則通過字尾來區別輸入檔案的類別,下面介紹gcc所遵循的部分約定規則。c為字尾的檔案,c語言源 檔案 a為字尾的檔案,是由目標檔案構成的庫檔案 c,cc或.cxx 為字尾的檔案,是c 源 檔案 h為字...

linux 下gcc的使用

在linux系統中,可執行檔案沒有統一的字尾,系統從檔案的屬性來區分可執行檔案和不可執行檔案。而gcc則通過字尾來區別輸入檔案的類別,下面介紹gcc所遵循的部分約定規則。c為字尾的檔案,c語言源 檔案 a為字尾的檔案,是由目標檔案構成的庫檔案 c,cc或.cxx 為字尾的檔案,是c 源 檔案 h為字...

linux下gcc的使用

假設源程式檔名為test.c。1.無選項編譯鏈結用法 gcc test.c2.選項 o用法 gcc test.c o test3.選項 e用法 gcc e test.c o test.i 作用 將test.c預處理輸出test.i檔案。4.選項 s用法 gcc s test.i 作用 將預處理輸出檔...