LinuxLink
執行期尋找 shared library 的流程
- 若 shared library 名稱內有 “/”,表示它是路徑,直接用這個路徑找
- 若 executable 內有定義 DT_RPATH 沒定義 DT_RUNPATH,從 DT_RPATH 列的目錄裡找
- 從 LD_LIBRARY_PATH 列的目錄裡找
- 從 DT_RUNPATH 列的目錄裡找
- 從 ldconfig 產生的 cache 內找 (/etc/ld.so.cache)
- 從 OS 的預設位置找: 先找 /lib 再找 /usr/lib
Tool
|
|
列出未定義需要外部提供的 symbol
列出需要的 shared library
ldd 會嘗試尋找後給出找到的 shared library 路徑
看找shared library的過程
GCC 連結查找參數
|
|
rpath 可以用相對於可執行檔的路徑
|
|
在執行資料夾下找shared library