---
author: ''
category: 技术
comments_data:
- date: '2014-08-14 11:01:59'
  message: 这个很有用！
  postip: 221.215.1.254
  username: 绿色圣光
- date: '2014-08-14 11:33:00'
  message: 去年遇到过这个问题。
  postip: 220.181.108.185
  username: 微博评论
- date: '2014-08-14 11:33:00'
  message: '@我的印象笔记'
  postip: 220.181.108.185
  username: 微博评论
- date: '2014-08-14 11:33:00'
  message: get√
  postip: 220.181.108.185
  username: 微博评论
- date: '2014-08-14 12:33:00'
  message: Repost
  postip: 175.42.28.220
  username: 微博评论
- date: '2014-08-14 12:33:00'
  message: 看图不是objdump？
  postip: 175.42.28.220
  username: 微博评论
- date: '2014-08-15 11:23:09'
  message: 上海FreeTech（群号:348891690）聚焦高端技术交流、项目对接；打造免费、开放、分享、合作的技术氛围，非上
  postip: 116.231.17.100
  username: ''
- date: '2014-08-16 01:32:46'
  message: 是的.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-16 01:34:52'
  message: 没有显示program header而已,只显示了dynamic section.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-16 01:34:55'
  message: 没有显示program header而已,只显示了dynamic section.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-16 14:56:22'
  message: 不懂啊
  postip: 211.142.77.71
  username: linux
- date: '2014-08-17 06:39:03'
  message: 樓主 對&nbsp;&nbsp;objdump -p /usr/bin/git 輸出結果進行了過濾.&nbsp;&nbsp;打印出來的信息是Dynamic
    section一部分. 即所有依賴.
  postip: 171.8.135.11
  username: netb2c
- date: '2014-08-17 21:46:19'
  message: 哦哦~~
  postip: 123.120.82.65
  username: linux
count:
  commentnum: 13
  favtimes: 6
  likes: 0
  sharetimes: 3
  viewnum: 16436
date: '2014-08-14 11:00:00'
editorchoice: false
excerpt: 问题：我想知道当我调用一个特定的可执行文件在运行时载入了哪些共享库。是否有方法可以明确Linux上可执行程序或运行进程的共享库依赖关系？  查看可执行程序的共享库依赖关系
  要找出某个特定可执行依赖的库，可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。 $ ldd /path/to/program   注意！并不推荐为任何不可信的第三方可执行程序运行ldd，因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系，这样可能不安全。
  取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖，使
fromurl: http://ask.xmodulo.com/check-library-dependency-program-process-linux.html
id: 3609
islctt: true
largepic: /images/p/201408/14/235224v1parpgwqsspcaio.jpg
permalink: /article-3609-1.html
pic: /images/p/201408/14/235224v1parpgwqsspcaio.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: 问题：我想知道当我调用一个特定的可执行文件在运行时载入了哪些共享库。是否有方法可以明确Linux上可执行程序或运行进程的共享库依赖关系？  查看可执行程序的共享库依赖关系
  要找出某个特定可执行依赖的库，可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。 $ ldd /path/to/program   注意！并不推荐为任何不可信的第三方可执行程序运行ldd，因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系，这样可能不安全。
  取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖，使
tags:
- Linux有问必答
- 进程
- 库
thumb: false
title: Linux有问必答：如何查看Linux上程序或进程用到的库
titlepic: false
translator: KayGuoWhu
updated: '2014-08-14 11:00:00'
---

**![](/images/p/201408/14/235224v1parpgwqsspcaio.jpg)**



> 
> **问题**：我想知道当我调用一个特定的可执行文件在运行时载入了哪些共享库。是否有方法可以明确Linux上可执行程序或运行进程的共享库依赖关系？
> 
> 
> 


### 查看可执行程序的共享库依赖关系


要找出某个特定可执行依赖的库，可以使用ldd命令。这个命令调用动态链接器去找到程序的库文件依赖关系。



```
$ ldd /path/to/program

```

![](/images/p/201408/13/230339h0148vg0y0xtvv44.jpg)


注意！并不推荐为任何不可信的第三方可执行程序运行ldd，因为某些版本的ldd可能会直接调用可执行程序来明确其库文件依赖关系，这样可能不安全。


取而代之的是用一个更安全的方式来显示一个未知应用程序二进制文件的库文件依赖，使用如下命令：



```
$ objdump -p /path/to/program | grep NEEDED 

```

![](/images/p/201408/13/230128hszsyhz99z7s197b.png)


### 查看运行进程的共享库依赖关系


如果你想要找出被一个运行中的进程载入的共享库，你可以使用pldd命令，它会显示出在运行时被载入一个进程里的所有共享对象。



```
$ sudo pldd <PID>

```

注意你需要root权限去执行pldd命令。


![](/images/p/201408/13/230255vxylkh62k65073as.jpg)


或者，也可以选择一个叫做pmap的命令行工具。它报告一个进程的内存映射，也能显示出运行进程的库文件依赖。



```
$ sudo pmap <PID>

```

![](/images/p/201408/13/230346lbtzsw7wltonnbgl.jpg)




---


via: <http://ask.xmodulo.com/check-library-dependency-program-process-linux.html>


译者：[KayGuoWhu](https://github.com/KayGuoWhu) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译，[Linux中国](http://linux.cn/) 荣誉推出