比如查看apache
查看mysql
ldd 会模拟软件运行,找出运行时所依赖的包
查看编译时的库路径
另一个很重要的命令
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]
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]