-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Wang Xu 写道: > 在 06-11-18,bakefish<[EMAIL PROTECTED]> 写道: >> 如题,一个程序我怎么才能知道用到了哪些库 > > 参考 《Debian新维护人员手册》 4.1: > > 要想知道你的软件在编译的时候需要用到哪一个软件包,可以通过下面的方法: > > strace -f -o /tmp/log ./configure > # or make instead of ./configure, if the package doesn't use > autoconf > for x in `dpkg -S $(grep open /tmp/log|\ > perl -pe 's!.* open\(\"([^\"]*).*!$1!' |\ > grep "^/"| sort | uniq|\ > grep -v "^\(/tmp\|/dev\|/proc\)" ) > 2>/dev/null|\ > cut -f1 -d":"| sort | uniq`; \ > do \ > echo -n "$x (>=" `dpkg -s $x|grep ^Version|cut -f2 > -d":"` "), "; \ > done > > 要准确地找到构建/usr/bin/foo所需要的软件包,执行: > > objdump -p /usr/bin/foo | grep NEEDED > > 而要列出每一个库,如libfoo.so.6,执行: > > dpkg -S libfoo.so.6 > > 现在你已经安装了"Build-deps"一项列出的每一个-dev软件包。如果你使用 > ldd来完成这个任务,它会把并非直接使用的库也报告出来,导致过多的构造 > 依赖。 我怀疑他在说这个 [EMAIL PROTECTED]:~# ldd /bin/ls linux-gate.so.1 => (0xffffe000) librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xa7ed9000) libacl.so.1 => /lib/libacl.so.1 (0xa7ed3000) libselinux.so.1 => /lib/libselinux.so.1 (0xa7ebe000) libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xa7d8d000) libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xa7d7b000) /lib/ld-linux.so.2 (0xa7ef8000) libattr.so.1 => /lib/libattr.so.1 (0xa7d76000) libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xa7d72000) libsepol.so.1 => /lib/libsepol.so.1 (0xa7d31000)
- -- 与其相濡以沫,不如相忘于江湖 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFFXqAqOhzb4WnHl2oRAhvsAKCFqHIPRKnGWbODOo7JSkeG5Xe6iwCdF+r2 Rzh+6obrNCmJMeK/n/gaVTE= =ydxD -----END PGP SIGNATURE----- -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]