日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

binary hacks读数笔记(共享库)

發(fā)布時間:2025/7/25 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 binary hacks读数笔记(共享库) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

  共享庫從文件結(jié)構(gòu)上來講,與共享對象沒什么區(qū)別。Linux下,共享庫就是普通的ELF共享對象。

1、共享庫命名:

  libname.so.x.y.z :其中最前面使用前綴lib,中間是庫的名字和后綴“so”。最后三個數(shù)字組成的是版本號。其中,“x”表示主版本號,“y”表示次版本號,"z"表示發(fā)布版本號。

2、SO-NAME:

  共享庫主版本號與次版本號決定了一個共享庫的接口。對于Linux系統(tǒng)來說,普遍采用一種叫做SO-NAME的命名機(jī)制來記錄共享庫依賴關(guān)系。每個共享庫都有一個對應(yīng)的"SO-NAME"。這個SO-NAME即為共享庫的文件名去掉次版本號和發(fā)行版本號,保留主版本號。比如一個共享庫為libfoo.so.2.6.1,那么它的SO-NAME為libfoo.so.2。在linux系統(tǒng)中,系統(tǒng)會為每個共享庫在它所在目錄創(chuàng)建一個跟SO-NAME相同的并且指向它的軟鏈接。以SO-NAME創(chuàng)建的軟鏈接會指向目錄中主版本號相同、次版本號和發(fā)行版本號最新的共享庫。

3、鏈接名

  當(dāng)我們在編譯使用共享庫時,為了使用的簡潔,比如鏈接一個libXXX.so.2.6.1共享庫,只需要在編譯相關(guān)命令中指定-lXXX即可。編譯器會根據(jù)當(dāng)前環(huán)境,在系統(tǒng)相關(guān)路徑(往往由-L參數(shù)指定)查找最新版本"XXX"庫。

  “XXX”又稱為共享庫鏈接名。不同類型的庫可能會有同樣的類型名。例如靜態(tài)庫libc.a與動態(tài)庫libc.so.2.6.1。因而利用ld的-static參數(shù)時,“-lc”會查找到libc.a; 若使用-Bdynamic? “-lc”則會查找到libc.so.2.6.1。

4、共享庫路徑:

  一般一個系統(tǒng)中主要有3個存放共享庫的路徑。

a、/lib 這個位置主要存系統(tǒng)最關(guān)鍵和基礎(chǔ)的共享庫。比如動態(tài)鏈接器、c語言運(yùn)行庫等

b、/usr/lib 這個位置主要放一些非系統(tǒng)運(yùn)行時所需關(guān)鍵庫。

c、/usr/local/lib 這個目錄位置放置一些與系統(tǒng)本身并不十分相關(guān)的庫。

?

  

轉(zhuǎn)載于:https://www.cnblogs.com/wsw-seu/p/10655707.html

總結(jié)

以上是生活随笔為你收集整理的binary hacks读数笔记(共享库)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。