查看软件运行所依赖的软件包

比如查看apache

bsd# whereis httpd
httpd: /usr/local/sbin/httpd /usr/local/man/man8/httpd.8.gz /usr/ports/www/apache22/work/httpd-2.2.17/httpd

bsd# cd /usr/local/sbin/
bsd# ldd htpd
ldd: htpd: No such file or directory
bsd# ldd httpd
httpd:
libm.so.5 => /lib/libm.so.5 (0x280ca000)
libpcre.so.0 => /usr/local/lib/libpcre.so.0 (0x280df000)
libaprutil-1.so.3 => /usr/local/lib/libaprutil-1.so.3 (0x28117000)
libdb-4.2.so.2 => /usr/local/lib/libdb-4.2.so.2 (0x28133000)
libgdbm.so.3 => /usr/local/lib/libgdbm.so.3 (0x28207000)
libexpat.so.6 => /usr/local/lib/libexpat.so.6 (0x2820d000)
libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x2822d000)
libapr-1.so.4 => /usr/local/lib/libapr-1.so.4 (0x28323000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x2834a000)
libthr.so.3 => /lib/libthr.so.3 (0x28363000)
libc.so.7 => /lib/libc.so.7 (0x28378000)


查看mysql

bsd# whereis mysql
mysql: /usr/local/bin/mysql /usr/local/man/man1/mysql.1.gz /usr/ports/databases/php5-mysql/work/php-5.3.3/ext/mysql
bsd# ldd mysql

ldd: mysql: No such file or directory
bsd# cd /usr/local/bin/
bsd# ldd mysql
mysql:
libreadline.so.7 => /lib/libreadline.so.7 (0x2808d000)
libncursesw.so.7 => /lib/libncursesw.so.7 (0x280bf000)
libmysqlclient.so.16 => /usr/local/lib/mysql/libmysqlclient.so.16 (0x2810b000)
libcrypt.so.4 => /lib/libcrypt.so.4 (0x28176000)
libz.so.4 => /lib/libz.so.4 (0x2818f000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x281a1000)
libm.so.5 => /lib/libm.so.5 (0x28296000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x282ab000)
libthr.so.3 => /lib/libthr.so.3 (0x282b6000)
libc.so.7 => /lib/libc.so.7 (0x282cb000)
libncurses.so.7 => /lib/libncurses.so.7 (0x283cd000)
bsd#


ldd 会模拟软件运行,找出运行时所依赖的包

查看编译时的库路径

bsd# gcc -print-search-dirs
install: /usr/libexec/
programs: =/usr/bin/:/usr/bin/:/usr/libexec/:/usr/libexec/:/usr/libexec/
libraries: =/usr/lib/:/usr/lib/


另一个很重要的命令

LD_DEBUG
The dynamic library loader used in linux (part of glibc) has some neat tricks. One of these is that you can set an environment variable called
LD_DEBUG

to show how symbols (variables and functions, for example) are resolved for a dynamic executable. This can sometimes help resolve obscure bugs where your application isn’t doing what you expect (assuming it is caused by symbols being resolved differently to what you were expecting).

This is very useful if you get segmentation violations or aborts for a program - this can sometimes be caused by linking against the wrong version of a library. This is also a really good way to understand what happens when you run any program! It has some self-documentation - for the impatient, you can do

详细用法见 [url]http://www.ningoo.net/html/2009/install_memcached_on_linux_64.html[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值