日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Linux下如何查看庫(kù)鏈接?(linux系統(tǒng)查看庫(kù)鏈接)

在Linux操作系統(tǒng)中,動(dòng)態(tài)鏈接庫(kù)是一個(gè)非常重要的概念,它可以節(jié)約系統(tǒng)資源、提高程序運(yùn)行效率和可維護(hù)性。因此,了解如何查看庫(kù)鏈接也就成為了必備技能之一。本文將介紹幾種在Linux下查看庫(kù)鏈接的方法,供讀者參考。

創(chuàng)新互聯(lián)公司主要從事做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)海陽(yáng),10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):18982081108

一、ldd命令

ldd(List Dynamic Dependencies)命令是最常用的查看庫(kù)鏈接的方法之一。它可以列出一個(gè)可執(zhí)行文件或共享庫(kù)所依賴的其他共享庫(kù)。使用ldd命令的方法非常簡(jiǎn)單,只需要在終端輸入以下命令:

ldd 庫(kù)文件名

例如,我們想要查看/usr/lib/libc.so.6這個(gè)共享庫(kù)的鏈接情況,只需要在終端輸入:

ldd /usr/lib/libc.so.6

輸出結(jié)果如下:

linux-vdso.so.1 => (0x00007ffdfe7ff000)

libc.so.6 => /usr/lib/libc.so.6 (0x00007f6491a0a000)

/usr/lib/ld-linux-x86-64.so.2 (0x00007f64920fb000)

其中,之一列是依賴的庫(kù)文件名,第二列是依賴庫(kù)文件的地址。我們可以看到,libc.so.6依賴于libc.so.6、/usr/lib/ld-linux-x86-64.so.2以及l(fā)inux-vdso.so.1三個(gè)庫(kù)文件。

二、objdump命令

objdump(Objective Dump)命令可以查看二進(jìn)制文件中的符號(hào)表、重定位表等信息,也可用于查看庫(kù)鏈接情況。使用objdump命令的方法為:

objdump -p 庫(kù)文件名

例如,我們想要查看/lib64/libpthread.so.0這個(gè)共享庫(kù)的鏈接情況,只需要在終端輸入:

objdump -p /lib64/libpthread.so.0

輸出結(jié)果如下:

/lib64/libpthread.so.0: file format elf64-x86-64

Program Headers:

Type Offset VirtAddr PhysAddr

FileSiz MemSiz Flags Align

PHDR 0x0000000000000040 0x0000000000000040 0x0000000000000040

0x00000000000001f8 0x00000000000001f8 R 0x8

INTERP 0x0000000000000238 0x0000000000000238 0x0000000000000238

0x000000000000001c 0x000000000000001c R 0x1

[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

LOAD 0x0000000000000000 0x0000000000000000 0x0000000000000000

0x000000000000ec18 0x000000000000ec18 R E 0x202300

LOAD 0x000000000000f000 0x000000000020f000 0x000000000020f000

0x00000000000014d8 0x0000000000002a70 RW 0x202300

DYNAMIC 0x000000000000f020 0x000000000020f020 0x000000000020f020

0x00000000000001e0 0x00000000000001e0 RW 0x8

NOTE 0x0000000000000254 0x0000000000000254 0x0000000000000254

0x0000000000000044 0x0000000000000044 R 0x4

GNU_EH_FRAME 0x000000000000c7ac 0x000000000000c7ac 0x000000000000c7ac

0x0000000000002cf4 0x0000000000002cf4 R 0x4

GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000

0x0000000000000000 0x0000000000000000 RW 0x10

GNU_RELRO 0x000000000000f000 0x000000000020f000 0x000000000020f000

0x0000000000001088 0x0000000000001088 R 0x1

Dynamic Section:

NEEDED libgcc_s.so.1

NEEDED libc.so.6

INIT 0x0000000000001dd0

FINI 0x0000000000010ab0

INIT_ARRAY 0x000000000020f000

INIT_ARRAYSZ 0x0000000000000010

FINI_ARRAY 0x000000000020f010

FINI_ARRAYSZ 0x0000000000000008

GNU_HASH 0x00000000000006b8

STRTAB 0x0000000000004c50

SYMTAB 0x0000000000001698

STRSZ 0x000000000000a325

SYMENT 0x0000000000000018

CHECKSUM 0x0000000000000000

VERNEED 0x0000000000004990

VERNEEDNUM 0x0000000000000001

VERSYM 0x0000000000004222

我們可以看到,在Dynamic Section區(qū)域中,有一個(gè)NEEDED字段,該字段列出了/lib64/libpthread.so.0所依賴的庫(kù)文件,例如libgcc_s.so.1和libc.so.6。

三、readelf命令

readelf命令可以查看ELF文件信息。ELF(Executable and Linking Format)是Linux上一種常見(jiàn)的二進(jìn)制文件格式,包括可執(zhí)行文件和共享庫(kù)等。readelf命令可以查看ELF文件的頭信息、節(jié)表、符號(hào)表、重定位表和動(dòng)態(tài)鏈接庫(kù)依賴等信息。使用readelf命令查看庫(kù)鏈接的方法為:

readelf -d 庫(kù)文件名

例如,我們想要查看/usr/lib/libc.so.6這個(gè)共享庫(kù)的鏈接情況,只需要在終端輸入:

readelf -d /usr/lib/libc.so.6

輸出結(jié)果如下:

Dynamic section at offset 0x12e78 contns 24 entries:

Tag Type Name/Value

0x0000000000000001 (NEEDED) Shared library: [linux-vdso.so.1]

0x0000000000000001 (NEEDED) Shared library: [libc.so.6]

0x000000000000000c (INIT) 0x420230

0x000000000000000d (FINI) 0x433178

0x0000000000000004 (HASH) 0x3c5b28

0x000000006ffffef5 (GNU_HASH) 0x3bcde0

0x0000000000000005 (STRTAB) 0x3b6898

0x0000000000000006 (SYMTAB) 0x394398

0x000000000000000a (STRSZ) 1326262 (bytes)

0x000000000000000b (SYMENT) 24 (bytes)

0x0000000000000015 (DEBUG) 0x0

0x0000000000000003 (PLTGOT) 0x444000

0x0000000000000002 (PLTRELSZ) 17760 (bytes)

0x0000000000000014 (PLTREL) RELA

0x0000000000000017 (JMPREL) 0x41e460

0x0000000000000007 (RELA) 0x41e3a0

0x0000000000000008 (RELASZ) 282328 (bytes)

0x0000000000000009 (RELAENT) 24 (bytes)

0x000000000000001e (FLAGS) BIND_NOW

0x000000006ffffffb (FLAGS_1) Flags: NOW

0x000000006ffffffe (VERNEED) 0x41d0b8

0x000000006fffffff (VERNEEDNUM) 2

0x000000006ffffff0 (VERSYM) 0x3ff25e

0x0000000050000000 (AT_PLATFORM) arch=x86_64

在輸出結(jié)果中,可以看到NEEDED字段列出了/usr/lib/libc.so.6所依賴的庫(kù)文件,即linux-vdso.so.1和libc.so.6。此外,readelf命令還可以查看該共享庫(kù)的符號(hào)表、重定位表等信息,有助于深入了解共享庫(kù)的運(yùn)行機(jī)制。

本文介紹了在Linux下查看庫(kù)鏈接的三種方法:ldd命令、objdump命令和readelf命令。這些方法都可以有效地幫助用戶了解程序所依賴的共享庫(kù),進(jìn)而保證程序的正常運(yùn)行。在實(shí)際使用中,讀者可以根據(jù)自己的需要選擇使用不同的命令工具。希望讀者通過(guò)本文的介紹,能夠更好地理解Linux操作系統(tǒng)下的共享庫(kù)機(jī)制,為以后的軟件開(kāi)發(fā)和系統(tǒng)維護(hù)提供更多的參考。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

linux 怎么指定靜態(tài)鏈接靜態(tài)庫(kù)

創(chuàng)建散芹靜態(tài)肢謹(jǐn)庫(kù):歷掘基 ar -rcs test.a *.o 查看靜態(tài)庫(kù): ar -tv test.a 解壓靜態(tài)庫(kù): ar -x test.a 查看程序依賴的動(dòng)態(tài)庫(kù): readelf -a xxx|grep library 如:可以看到,下面的交叉程序hello執(zhí)行依賴于如下兩個(gè)動(dòng)態(tài)庫(kù)。 rebi@ubuntu:~/test$ arm-none-li…

linux系統(tǒng)查看庫(kù)鏈接的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux系統(tǒng)查看庫(kù)鏈接,Linux下如何查看庫(kù)鏈接?,linux 怎么指定靜態(tài)鏈接靜態(tài)庫(kù)的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開(kāi)發(fā),成都網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣等一站式服務(wù)。


網(wǎng)站欄目:Linux下如何查看庫(kù)鏈接?(linux系統(tǒng)查看庫(kù)鏈接)
當(dāng)前網(wǎng)址:http://www.dlmjj.cn/article/djceeed.html