温馨提示×

ubuntu gcc怎样查看依赖

小樊
42
2026-09-16 05:36:47
栏目: 智能运维

在 Ubuntu 下,如果你是用 GCC 编译程序,想查看程序依赖(通常是动态库依赖),常见做法如下:


一、查看可执行文件的依赖库(最常用)

1️⃣ ldd 命令

ldd your_program

示例输出:

linux-vdso.so.1 (0x00007fff...)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6

✅ 适合:查看运行时依赖的 .so 库

⚠️ 注意:

  • 不能用于静态可执行文件
  • 不要对不可信程序用 ldd(有安全风险)

2️⃣ objdump(更底层)

objdump -p your_program | grep NEEDED

示例:

NEEDED               libc.so.6
NEEDED               libm.so.6

✅ 适合:分析 ELF 文件结构


3️⃣ readelf

readelf -d your_program | grep NEEDED

二、查看 GCC 编译时链接了哪些库

1️⃣ 编译时加参数

gcc -v main.c -o main

会显示:

  • 使用的头文件路径
  • 链接的库路径
  • 实际调用的 collect2 / ld 参数

2️⃣ 查看链接命令

gcc -### main.c -o main

不会真正编译,只打印命令


三、查看某个库由哪个包提供(Ubuntu 特有)

dpkg -S libname.so

例如:

dpkg -S libc.so.6

四、查看头文件 / 库搜索路径

gcc -print-search-dirs

或:

echo | gcc -E -Wp,-v -

五、示例:完整流程

gcc main.c -o main -lm
ldd main

输出:

libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

如果你的问题是:

  • ✅ 查看 自己写的程序依赖
  • ✅ 查看 某个 .so 依赖
  • ✅ 查看 GCC 本身依赖
  • ✅ 静态 / 动态依赖区别

可以告诉我具体场景,我可以给你更精确的命令。

0 踩