sql 查詢字元座標位置 之PATINDEX()函式詳解
阿新 • • 發佈:2022-04-12
1編譯連結庫
- -lz:壓縮看(Z)
- -lrt: 實時庫(real time):shm_open系列
- -lm: 數學庫(math)
- -lc: 標準C庫(C lib)
- -dl: 顯示載入動態庫的動態函式庫
2檔案引數
- -I ( i 的大寫) :指定標頭檔案路徑(相對路徑或絕對路徑,建議相對路徑)
- -i :指定標頭檔案名字 (一般不使用,而是直接放在.c 檔案中通過#include<*.h> 新增)
- -L :指定連線的動態庫或者靜態庫路徑(相對路徑或絕對路徑,建議相對路徑)
- -l (L的小寫):指定需要連結的庫的名字(連結 libc.a :-lc 連結動態庫:libc.so : -lc 注意:-l後面直接新增庫名省去“lib”和“.so”或“.a” )
2.1 問題:
問題1:-l(L的小寫)連結的到底是動態庫還是靜態庫
答案:如果連結路徑下同時有 .so 和 .a 那優先連結 .so
問題2:如果路徑下同時有靜態庫和動態庫如何連結靜態庫
答案:使用顯示連結, gcc -l:lib***.a (將靜態庫的名字顯示寫出來)
或者在 gcc 編譯的時候 加入引數 -static -lXXX, 則可以新增路徑下面的靜態庫。
驗證方法:
可以通過 ldd 命令檢視生成的 目標檔案連結的庫,使用方法: ldd ***.o
2.2 參考
gcc -I -i -L -l 引數區別 / -l(靜態庫/動態庫)(轉)
2.3 靜態庫連結時搜尋路徑順序
- ld會去找GCC命令中的引數-L
- 再找gcc的環境變數LIBRARY_PATH (用法:LIBRARY_PATH= path)
- 再找內定目錄 /lib /usr/lib /usr/local/lib這是當初compile gcc時寫在程式內的 (因系統版本而定 :/lib64)
2.4 動態庫連結時搜尋路徑順序
- 去找GCC命令中的引數-L
- 環境變數LD_LIBRARY_PATH指定的動態庫搜尋路徑 (LD_LIBRARY_PATH=path)
- 配置檔案/etc/ld.so.conf中指定的動態庫搜尋路徑 (修改/etc/ld.so.conf檔案,將路徑新增進去,執行/sbin/ldconfig)
- 預設的動態庫搜尋路徑/lib(因系統版本而定:/lib64)
- 預設的動態庫搜尋路徑/usr/lib(因系統版本而定)
2.5 標頭檔案搜素路徑
- 去 -I( i 的大寫 ) 指定的路徑
- 源程式頭(#include "")檔案中指定的路徑
- /usr/include
- /usr/local/include
2.6 有關環境變數
LIBRARY_PATH環境變數:指定程式靜態連結庫檔案搜尋路徑
LD_LIBRARY_PATH環境變數:指定程式動態連結庫檔案搜尋路徑
(這部分來源:https://blog.csdn.net/qq_21034239/article/details/54382311,並修改)