可以使用下面的方法,,給連接器傳遞參數(shù),,看是否鏈接動(dòng)態(tài)庫還是靜態(tài)庫。
-WI,-Bstatic -llibname //指定讓gcc/g++鏈接靜態(tài)庫 使用: gcc/g++ test.c -o test -WI,-Bstatic -llibname
-WI,-Bdynamic -llibname //指定讓gcc/g++鏈接動(dòng)態(tài)庫 使用: gcc/g++ test.c -o test -WI,-Bdynamic -llibname
如果要完全靜態(tài)加在,,使用-static參數(shù),,即將所有的庫以靜態(tài)的方式鏈入可執(zhí)行程序,這樣生成的可執(zhí)行程序,,不再依賴任何庫,,同事出現(xiàn)的問題是,這樣編譯出來的程序非常大,,占用空間,。
2、Linux下動(dòng)態(tài)庫為什么會(huì)出現(xiàn)編譯OK,,運(yùn)行時(shí)找不到的情況,。 原因是: linux下鏈接器默認(rèn)是不記錄庫的搜索路徑的,只記錄名字,,所以才會(huì)有編譯時(shí)OK,,但運(yùn)行時(shí),找不到的情況,。 解決方法: 想在程序中記錄路徑,,可以使用-WI,-rlibpath指定動(dòng)態(tài)庫的搜索路徑。 使用方法,。 gcc/g++ test.c -o test -WI,rlibpath -llibname
3,、關(guān)于Linux下庫的更多問題,可以參看: 自己的博客: http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520101023104745738/ http:///200911/analytics-on-unix-static-and-dynamic-library/ |
|