一、ldd命令全稱
ldd命令全稱為list dynamic dependencies(列出動態依賴),是Linux下常用的命令之一。它可以用來顯示一個可執行文件或者共享庫(動態鏈接庫)所依賴的共享庫。
二、ldread命令
在講解ldd命令之前,需要先了解一個名為ldread的命令。
ldread命令用於將一個ELF(Executable and Linkable Format)文件中的動態鏈接信息讀出來,主要用於間接執行動態鏈接器來要求載入一個特定的共享庫。實際上,ldd命令就是利用了ldread命令來實現其顯示功能的。
下面是一個使用ldread命令的示例:
ldread /usr/bin/vim
三、ldd命令用不了
在某些情況下,執行ldd命令可能會失效,比如運行在chroot環境中的程序無法在其環境外面執行ldd命令。
四、ld命令
在講解ldd命令之前,還需要先介紹另一個命令——ld命令(全稱為linker editor),它用於連接目標文件和庫文件生成可執行文件或共享庫文件。
對於C或C++程序而言,編譯器(比如gcc)將源文件編譯成目標文件,然後通過ld命令將目標文件與所需的庫文件連接起來生成可執行文件。
下面是一個使用ld命令的示例:
gcc -o myprogram myprogram.c -lm
該命令將myprogram.c編譯成myprogram目標文件,並鏈接了一個名為libm.so的數學庫文件生成可執行文件myprogram。
五、ed命令
ed命令是ldd命令的另一個重要組成部分,它是一個UNIX文本編輯器,因為它可以讀取二進位文件而被廣泛使用。
ldd命令使用ed命令來獲取某個共享庫所依賴的其他共享庫。具體來說,ed命令可以解析共享庫的符號表,然後將未找到的符號以及所需要的庫保存到臨時文件中,並通過grep命令檢查該庫是否存在。
六、命令cmd.type後面
在使用ldd命令時,我們經常會看到命令後面跟著一個文件名和文件路徑,比如:
ldd /usr/bin/vim
其中,/usr/bin/vim是一個可執行文件,我們可以用該命令來查看vim所依賴的共享庫。
七、ld命令的功能是什麼
ldd命令主要用於顯示一個程序或共享庫所依賴的共享庫,這對於程序調試和解決依賴問題非常有幫助。
除此之外,ld命令還有以下常見的功能:
- 將目標文件和庫文件鏈接成可執行文件或共享庫文件
- 為鏈接過程指定符號長符
- 指定庫路徑
八、linux ldd命令
ldd命令在Linux系統中被廣泛使用,它可以幫助我們快速定位程序運行所需的庫文件,從而避免出現庫文件缺失導致程序無法運行的問題。
九、ldconfig命令不存在
有些人可能會在網上搜索到ldconfig命令來替代ldd命令,但實際上這是不正確的。ldconfig命令主要用於管理Linux系統中共享庫的緩存,它會從/etc/ld.so.conf、/etc/ld.so.conf.d目錄和LD_LIBRARY_PATH環境變數中指定的路徑中查找共享庫,並將其緩存到/etc/ld.so.cache文件中。
儘管ldconfig命令與ldd命令都涉及到共享庫,但二者的作用是不同的。
十、代碼示例
下面的示例代碼展示了如何使用ldd命令來查看vim所依賴的共享庫:
ldd /usr/bin/vim
原創文章,作者:NNQU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145190.html