linux下列出共享库依赖的编程方法

发布于 2024-11-19 14:25:38 字数 55 浏览 5 评论 0原文

有没有任何编程方法(系统调用?)来列出 Linux 上的共享库依赖项?而不是使用 ldd ...

Is there any programming way (system call?) to list shared library dependency on Linux? Instead of using ldd ...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

庆幸我还是我 2024-11-26 14:25:38
readelf -Wa lib.so|grep NEEDED
readelf -Wa lib.so|grep NEEDED
江挽川 2024-11-26 14:25:38

将 LD_TRACE_LOADED_OBJECTS 环境变量设置为非空字符串并运行二进制文件。查看手册页。

LD_TRACE_LOADED_OBJECTS
    (ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally. 

Set LD_TRACE_LOADED_OBJECTS environment variable to non-empty string and run your binary. Look at this man page.

LD_TRACE_LOADED_OBJECTS
    (ELF only) If set to non-empty string, causes the program to list its dynamic library dependencies, as if run by ldd(1), instead of running normally. 
唐婉 2024-11-26 14:25:38

这是我自己在 Fedora 上使用的简单 bash 脚本,它依赖于 rpm 包的 find-requires,你可以查看 find-requires 内部使用的工具。

#!/bin/bash
#
# Use rpm to recursively list dependencies of all files in a directory
#
# Syntax:
#   lsdep path/to/directory
# Example:
#   lsdep /usr/src/kernels/`uname -r`/

find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \;

This is the simple bash script I use myself on Fedora, it relies on find-requires of rpm package, you can look inside find-requires to find what tools it internally uses.

#!/bin/bash
#
# Use rpm to recursively list dependencies of all files in a directory
#
# Syntax:
#   lsdep path/to/directory
# Example:
#   lsdep /usr/src/kernels/`uname -r`/

find $1 -type f -exec sh -c 'res=`echo '{}' | /usr/lib/rpm/find-requires`; [ -n "$res" ] && (echo;echo file '{}'; echo $res)' \;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文