找不到庫的處理方案
有兩種方法:
一、可以把當前路徑加入 /etc/ld.so.conf中然后運行ldconfig,或者以當前路徑為參數運行ldconfig(要有root權限才行)。
二、把當前路徑加入環境變量LD_LIBRARY_PATH中
如何使用庫
gcc中關於庫的參數有:
-L 指定搜尋庫的目錄
如指定當前目錄 gcc -L .
-l 指定要鏈接的庫的名稱
加入庫的名稱是libmylib.a,則gcc -l mylib,即去頭去尾。
--static 組織在鏈接時使用動態庫
--shared 生成動態庫
--static-libgcc 鏈接靜態libgcc庫
--shared-libgcc 鏈接動態libgcc庫
可見對動態庫和靜態庫的使用方法是一樣的,
同一個庫如果同時存在動態庫和靜態庫,優先鏈接動態庫,除非使用--static強制使用靜態庫。
庫標准路徑下存在libABC.a和libABC.so使用gcc -lABC如何選擇連接靜態連接庫或者動態連接庫?通過--hare --static選項?
如果在同一路徑下面,並且兩種庫同名,這樣會選擇動態庫。
gcc 同時連接 靜態庫和動態庫現在有 libmy.a & libmy.so兩個庫,其中的函數供main.cc調用要在可執行文件中同時連接這兩個庫gcc -g -lstdc++ -g -L. -lmy -l ./libmy.a -o test.exe main.cc // 報找不到libmy.a,可是在當前目錄下已經有這個文件了gcc -g -lstdc++ -g -L. -l libmy.so -l ./libmy.a -o test.exe main.cc // 報找不到libmy.so,在當前目錄下也有這個文件用了 -static 選線,則報動態庫中的函數沒定義請問大家有什么招不?
我記得靜態庫混合動態庫要加特殊指令的,你可以試試這樣:gcc -g -lstdc++ -g -WI,-Bdynamic -L. -lmy -WI,-Bstatic -L. -lmy -o test.exe main.cc