女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何查看linux程序共享庫呢?

嵌入式小生 ? 來源:嵌入式小生 ? 2023-08-28 09:11 ? 次閱讀

一、開篇

linux系統中,程序通常需要依賴于外部庫來正常工作。這些庫可以直接編譯到程序中,也可以從共享庫池中加載。使用共享庫有助于減小程序大小,簡化開發和打包。在linux中,共享庫通常存儲在/lib或/usr/lib目錄下。

不同的linux發行版甚至同一發行版的版本可能使用不同的庫,從而導致一個發行版編譯的程序在另一個發行版上運行出現故障。當系統中缺少所需庫時,這時可能會遇到錯誤。在嵌入式linux環境中,庫文件更是非常關鍵,因為嵌入式linux中硬件環境往往具有嚴苛的限制,太多的庫將無法完整放入對應的硬件環境下,所以重新組建linux下的運行庫在嵌入式linux設計中是重要的一環操作。

要解決共享庫加載的問題,我們可以使用一些工具和命令來確定程序所依賴的共享庫,本文將討論實現這一目標的幾種方法。

二、ldd命令

ldd命令用于打印出共享對象的依賴。語法如下:

ldd[選項]文件

可選的參數如下:

--help印出這份說明然后離開
--version印出版本信息然后離開
-d,--data-relocs進程數據重尋址
-r,--function-relocs進程數據和函數重尋址
-u,--unused印出未使用的直接依賴關系
-v,--verbose印出所有信息

例如:

f4d7eef4-4538-11ee-a2ef-92fbcf53809c.png

使用-v可查看更詳細的信息:

f50b460a-4538-11ee-a2ef-92fbcf53809c.png

注意,使用ldd命令時可能會導致程序運行,因此不要在不受信任的可執行文件上使用ldd。

三、readelf命令

readelf命令是一個強大的命令,用于顯示ELF文件的信息,可使用該命令查看共享庫的依賴,方法如下:

readelf--dynamic./app|grepNEEDED

例如下列命令用于查看/usr/bin/dir的依賴庫:

f53cbdca-4538-11ee-a2ef-92fbcf53809c.png

四、objdump命令

objdump命令在開發中也是一個較為常用的命令,且功能強大,用于顯示對象文件中的信息,可以使用該命令來查看共享庫的依賴,方法如下:

objdump-p/path/to/program|grepNEEDED

例如下列命令用于查看/usr/bin/dir的依賴庫:

f5561c8e-4538-11ee-a2ef-92fbcf53809c.png

五、pldd命令

f56d723a-4538-11ee-a2ef-92fbcf53809c.png

六、/proc//maps

通過檢查/proc//maps來獲知運行進程的庫需求:

awk'/.so/{print$6}'/proc/$(pgrepbash|head-n1)/maps|sort-u

例如:

f59a249c-4538-11ee-a2ef-92fbcf53809c.png

上述語句中pgrep bash | head -n1表示獲取第一個名為bash的進程的ID。

七、使用pmap收集程序的共享庫需求

pmap$(pgrepXorg|head-n1)|grep.so|awk'{print$4}'|sort-u

上述語句中pgrep bash | head -n1表示獲取第一個名為bash的進程的ID。

八、使用lsof工具檢查正在運行的進程的共享庫需求

使用方法:

lsof-p$(pgrepbash|head-n1)|grepmem

上述語句中pgrep bash | head -n1表示獲取第一個名為bash的進程的ID。

九、總結

在發行版的linux系統中,上述命令幾乎都可以使用來查看動態庫的依賴關系,在嵌入式linux系統中,可能由于網絡環境的限制、運行架構的不同、構建的文件系統中不存在對應的命令程序,從而導致上述一些命令無法運行或者找不到運行的命令,這時候常使用readelf和objdump查看動態庫的依賴關系,因為在交叉編譯構建工具鏈中一般會包含readelf和objdump命令的變體。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5133

    文章

    19502

    瀏覽量

    314337
  • Linux系統
    +關注

    關注

    4

    文章

    602

    瀏覽量

    28274
  • ELF文件
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7267
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10376

原文標題:八種查看linux程序共享庫的方法,了解多少?

文章出處:【微信號:嵌入式小生,微信公眾號:嵌入式小生】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux系統下查看elf文件的方法

    作為一個嵌入式開發人員,交叉編譯是必須進行的步驟。那么,如何判斷編譯生成的文件(動態,靜態,可執行程序)是否符合目標平臺的格式?下面分別介紹這 3 種文件的
    的頭像 發表于 08-25 16:17 ?3331次閱讀
    <b class='flag-5'>Linux</b>系統下<b class='flag-5'>查看</b>elf文件的方法

    linux共享下,調用共享庫函數時,程序卡死在函數中的pid=fork()這里的原因?

    linux共享下,調用共享庫函數時,程序卡死在函數中的pid=fork()這里,來個大佬指導指導原因...
    發表于 06-20 06:55

    Linux系統共享編程

    一、說明 類似Windows系統中的動態鏈接Linux中也有相應的共享用以支持代碼的復用。Windows中為*.dll,而Linux
    發表于 09-13 16:49 ?24次下載

    Linux下靜態和動態共享)的制作與使用

    Linux下靜態和動態共享)的制作與使用Linux
    發表于 07-09 14:39 ?1255次閱讀

    linux靜態和動態分析

    的二進制是不兼容的。 本文僅限于介紹linux下的。 2.的種類 linux下的有兩種:靜態
    發表于 11-02 10:12 ?1次下載

    你知道linux 靜態共享

    靜態鏈接和動態鏈接的區別在于,主程序在運行前,靜態鏈接的鏈接固定寫入在程序中,而動態鏈接
    發表于 04-26 16:46 ?3016次閱讀

    linux共享程序庫剖析

    共享程序庫通過版本號來完成對應用程序所使用的程序庫的升級,同時保留了對原有應用程序的兼容。本文將討論此方法的實際內幕,以及在
    發表于 04-02 14:35 ?380次閱讀

    Linux下C語言共享的位置無關實現原理分析

    如何創建一個*可執行*的共享 一文談完了如何讓共享可直接執行,本文再來談談共享的運行時位置
    的頭像 發表于 11-28 16:20 ?3207次閱讀

    如何查看linux端口

    有時我們需要知道系統中某個端口的占用情況,以便于解除程序對端口的占用,那么怎么查看Linux系統中的端口情況
    發表于 05-17 09:45 ?1917次閱讀

    Linux服務的內容如何查看

     ps是進程查看命令,netstat是端口查看命令,在Linux系統中,服務一定是有進程的,所以使用ps命令可以查看服務運行情況,另外,Linux
    發表于 05-20 09:09 ?861次閱讀
    <b class='flag-5'>Linux</b>服務的內容如何<b class='flag-5'>查看</b>

    ldd命令:用于打印程序或者共享文件所依賴的共享列表

    1.命令簡介 ldd 命令用于打印程序或者共享文件所依賴的共享列表。注意,ldd 本身不是一個二進制
    的頭像 發表于 02-02 11:37 ?2283次閱讀

    C++基礎語法知識之鏈接裝載Linux共享

    Linux共享(Shared Library) Linux 下的共享就是普通的 ELF
    的頭像 發表于 11-01 10:15 ?3086次閱讀

    Linux程序被Killed,查看原因

    Linux程序被Killed,查看原因
    的頭像 發表于 01-11 10:17 ?2458次閱讀

    Linux中的靜態共享

    是一個二進制文件,包含的代碼可被程序調用。例如標準C、數學、線程等等。有源碼,可下載后
    的頭像 發表于 05-10 09:34 ?1218次閱讀

    linux查看weblogic進程

    Linux操作系統中,WebLogic是一種常用的Java應用服務器,用于部署和管理企業級Java應用程序。為了確保WebLogic服務器正常運行,有時我們需要查看WebLogic進程以了解其狀態
    的頭像 發表于 12-05 16:07 ?2375次閱讀