chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

嵌入式小生 ? 來源:嵌入式小生 ? 2023-08-28 09:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、開篇

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

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

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

二、ldd命令

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

ldd[選項]文件

可選的參數(shù)如下:

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

例如:

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

使用-v可查看更詳細(xì)的信息:

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

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

三、readelf命令

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

readelf--dynamic./app|grepNEEDED

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

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

四、objdump命令

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

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。

九、總結(jié)

在發(fā)行版的linux系統(tǒng)中,上述命令幾乎都可以使用來查看動態(tài)庫的依賴關(guān)系,在嵌入式linux系統(tǒng)中,可能由于網(wǎng)絡(luò)環(huán)境的限制、運行架構(gòu)的不同、構(gòu)建的文件系統(tǒng)中不存在對應(yīng)的命令程序,從而導(dǎo)致上述一些命令無法運行或者找不到運行的命令,這時候常使用readelf和objdump查看動態(tài)庫的依賴關(guān)系,因為在交叉編譯構(gòu)建工具鏈中一般會包含readelf和objdump命令的變體。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5149

    文章

    19657

    瀏覽量

    317343
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    605

    瀏覽量

    28579
  • ELF文件
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7313
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10464

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux系統(tǒng)下查看elf文件的方法

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

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

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

    Linux系統(tǒng)共享編程

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

    Linux下靜態(tài)和動態(tài)共享)的制作與使用

    Linux下靜態(tài)和動態(tài)共享)的制作與使用Linux
    發(fā)表于 07-09 14:39 ?1282次閱讀

    linux靜態(tài)和動態(tài)分析

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

    你知道linux 靜態(tài)共享?

    靜態(tài)鏈接和動態(tài)鏈接的區(qū)別在于,主程序在運行前,靜態(tài)鏈接的鏈接固定寫入在程序中,而動態(tài)鏈接
    發(fā)表于 04-26 16:46 ?3047次閱讀

    linux共享程序庫剖析

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

    Linux下C語言共享的位置無關(guān)實現(xiàn)原理分析

    如何創(chuàng)建一個*可執(zhí)行*的共享 一文談完了如何讓共享可直接執(zhí)行,本文再來談?wù)?b class='flag-5'>共享的運行時位置
    的頭像 發(fā)表于 11-28 16:20 ?3250次閱讀

    如何查看linux端口

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

    Linux服務(wù)的內(nèi)容如何查看

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

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

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

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

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

    Linux程序被Killed,查看原因

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

    Linux中的靜態(tài)共享

    是一個二進制文件,包含的代碼可被程序調(diào)用。例如標(biāo)準(zhǔn)C、數(shù)學(xué)、線程等等。有源碼,可下載后
    的頭像 發(fā)表于 05-10 09:34 ?1327次閱讀

    linux查看weblogic進程

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