1. 程式人生 > >GCC編譯器一些引數區別(-I -l -L)

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時:

  • -I /home/hello/include,表示將/home/hello/include目錄作為第一個尋找標頭檔案的目錄,尋找的順序是:/home/hello/include–>/usr/include–>/usr/local/include

    • 也就是指定優先查詢的目錄,找不到的話查詢預設目錄
  • -L /home/hello/lib,表示將/home/hello/lib目錄作為第一個尋找庫檔案的目錄

    , 尋找的順序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

    • 同上,也是指定優先查詢的目錄
  • -l word , 表示**尋找動態連結庫檔案**libword.so(也就是檔名去掉字首和字尾所代表的庫檔案)

    • 如果 加上編譯選項-static,表示尋找靜態連結庫檔案,也就是libword.a

對於第三方提供的動態連結庫(.so),一般將其拷貝到一個lib目錄下(/usr/local/lib),或者使用-L來指定其所在目錄, 然後使用-l來指定其名稱