1. 程式人生 > 其它 >gcc -I -i -L -l 引數區別 / -l(靜態庫/動態庫)

gcc -I -i -L -l 引數區別 / -l(靜態庫/動態庫)

介紹

gcc - 引數

-I ( i 的大寫) :指定標頭檔案路徑(相對路徑或覺得路徑,建議相對路徑)

-i :指定標頭檔案名字 (一般不使用,而是直接放在**.c 檔案中通過#include<***.h> 新增)

-L :指定連線的動態庫或者靜態庫路徑(相對路徑或覺得路徑,建議相對路徑)

-l (L的小寫):指定需要連結的庫的名字(連結 libc.a :-lc 連結動態庫:libc.so : -lc 注意:-l後面直接新增庫名省區“lib”和“.so”或“.a” )


問題:

問題1:-l(L的小寫)連結的到底是動態庫還是靜態庫

答案:如果連結路徑下同時有 .so 和 .a 那優先連結 .so

問題2:如果路徑下同時有靜態庫和動態庫如何連結靜態庫

答案:使用顯示連結, gcc -l:lib***.a (將靜態庫的名字顯示寫出來)

或者在 gcc 編譯的時候 加入引數 -static -lXXX, 則可以新增路徑下面的靜態庫。

驗證方法:

可以通過 ldd 命令檢視生成的 目標檔案連結的庫,使用方法: ldd ***.o

-------------------------------------------------------------------------
轉載原文連結:https://blog.csdn.net/abcdu1/article/details/86083295