Linux 可执行程序依赖库收集

使用 ldd、awk 和 lddtree 查看并收集 Linux 可执行程序依赖的共享库。

在 Linux 系统中,程序运行时可能依赖于多个共享库(Shared Libraries)。有时我们需要将这些依赖库拷贝到特定目录,以确保程序能够正确运行。以下是一个简单的教程,介绍如何查找并拷贝这些依赖库。

假设我们有一个可执行文件 MyProject,我们希望将它依赖的所有共享库拷贝到 dist/lib/ 目录下。可以使用以下命令:

1
2
3
4
ldd MyProject \
 | awk '{print $3}' \
 | grep '^/' \
 | xargs -I{} cp -v {} dist/lib/

注意事项

  • 不要对来源不可信的可执行文件直接运行 ldd;部分实现可能触发目标程序的动态加载逻辑。
  • 上述命令只复制 ldd 输出第三列为绝对路径的库,动态加载器等条目可能需要单独处理。
  • 如果系统安装了 pax-utils,可以使用 lddtree 更清晰地查看递归依赖:
1
lddtree MyProject

打包完成后,建议通过 LD_LIBRARY_PATH 指向私有库目录进行验证:

1
LD_LIBRARY_PATH="$PWD/dist/lib" ./MyProject
记录工业视觉、C++ 与端侧 AI 部署实践