在本文中, 我們來聊聊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,表示...