GCC編譯器中的 I L l 選項。

2021-07-23 21:11:37 字數 1809 閱讀 6280

在本文中, 我們來聊聊gcc中三個常見的引數, 也即-i(大寫的i), -l(大寫的l)和-l(小寫的l) 

一. 先說 -i   (注意是大寫的i)

我們先來看簡單的程式:

main.c:

#include #include "add.h"  

int main()

add.c:

int add(int x, int y)  

add.h:

int add(int x, int y);

[taoge@localhost test]$ pwd  

/home/taoge/test

[taoge@localhost test]$ ls

add.c add.h main.c

[taoge@localhost test]$ gcc main.c add.c

[taoge@localhost test]$ ./a.out

sum is 3

[taoge@localhost test]$

我們看到, 一切正常。 gcc會在程式當前目錄、/usr/include和/usr/local/include目錄下查詢add.h檔案, 剛好有, 所以ok.

我們進行如下操作後再編譯, 卻發現有誤, 不怕, 我們用-i就行了:

[taoge@localhost test]$ ls  

add.c add.h a.out main.c

[taoge@localhost test]$ rm a.out; mkdir inc; mv add.h inc

[taoge@localhost test]$ ls

add.c inc main.c

[taoge@localhost test]$ gcc main.c add.c

main.c:2:17: error: add.h: no such file or directory

[taoge@localhost test]$

[taoge@localhost test]$

[taoge@localhost test]$

[taoge@localhost test]$ gcc -i ./inc/ main.c add.c

[taoge@localhost test]$ ls

add.c a.out inc main.c

[taoge@localhost test]$ ./a.out

sum is 3

[taoge@localhost test]$

上面把add.h移動到inc目錄下後, gcc就找不到add.h了, 所以報錯。 此時,要利用-i來顯式指定標頭檔案的所在地,  -i就是用來幹這個的:告訴gcc去**找標頭檔案。

二. 再來說-l(注意是大寫的l)

我們上面已經說了, -i是用來告訴gcc去**找標頭檔案的, 那麼-l實際上也很類似, 它是用來告訴gcc去**找庫檔案。 通常來講, gcc缺省會在程式當前目錄、/lib、/usr/lib和/usr/local/lib下找對應的庫。 -l的意思很明確了, 就不在贅述了。

三. 最後說說-l (注意是小寫的l)

我們之前討論過linux中的靜態庫和動態庫, -l的作用就是用來指定具體的靜態庫、動態庫是哪個。 

GCC中 I L l 選項的作用

在makefile中經常會看到這些選項,gcc缺省會在程式當前目錄 path路徑中查詢所需要的材料 如何給gcc新增我們自己的原材料 標頭檔案,庫等 imyinclude lb la整體舉例 cc g cflags g bin main objs main.o libs i usr include ...

GCC編譯器的 std選項

gcc支援在編譯的時候使用 std選項來選擇編譯語言的標準。程式本身也是在發展的,不斷變化的。以 c 語言為例,發展至今該程式語言已經迭代了諸多個版本,例如 c89 偶爾又稱為 c90 c94 c89 的修訂版 c99 c11。同樣,c 語言也經歷了很多的標準變化,例如c 11,c 14,以及現在最...

GCC編譯器一些引數區別 I l L

我們用gcc編譯程式時,常常會用到 i 大寫i l 大寫l l 小寫l 等引數,下面做個記錄 例 gcc o hello hello.c i home hello include l home hello lib lworld上面這句表示在編譯hello.c時 l home hello lib,表示...