Linux共享庫簡單總結

2022-02-25 12:06:42 字數 482 閱讀 7478

gcc -shared -o file.c

-fpicld

ld-linux.so.2

可執行程式–>動態依賴表

流程:程式執行–>載入ld-linux.so.2–>搜尋動態庫路徑尋–>路徑下根據動態鏈結表搜尋動態庫 –> 搜尋相應符號鏈結載入至記憶體執行

符號鏈結覆蓋:簡單的說是兩個同名的函式具有相同的符號鏈結則會繫結第一次搜尋到的符號鏈結函式

程式執行時搜尋到共享庫的三種方法

ld_path

/lib /usr/lib /etc/ld.config.d/ 下路徑新增

-rpath 編譯時選項庫別名

真實庫: libname.so.major.min –> libname.so.1.1

別名:libname.so.major–> libname.so.1

軟鏈結–>真實庫ldd

nmobjdump

ldconfig

readelf

Linux共享庫組織

1.版本組織 linux共享庫版本組織主要分為共享庫版本和符號版本 1 共享庫版本 共享庫採用x.y.z的方式標識共享庫版本,x為主版本號,y為次版本號,z為發布版本號 當主版本號發生變化時,代表共享庫版本發生了不相容的變化,如函式簽名變化 介面資料結構變化 函式行為變化等 當次版本號發生變化時,代...

Linux上建立共享庫so(簡單步驟)

1 建立 math1.c,在命令列中輸入 nano math1.c int add int x,int y 2 編譯生成共享庫libmath1.so gcc fpic shared olibmath1.so math1.c 3 建立測試 程式testmath.c,在命令列中輸入 nano testm...

Linux 靜態庫與共享庫

可以把 多個編譯好的目標檔案 打包成為乙個檔案,就是庫檔案。庫檔案有兩種 靜態庫 a 和共享庫 so 靜態庫和共享庫區別 靜態庫是 函式的歸檔,在使用時,複製函式的 區到最終的檔案中。共享庫是 函式的歸檔,在使用時,把函式在共享庫中的位址拿到最終的檔案中。靜態庫的效率稍高一點,但占用空間非常大,而且...