杂记10---ldd获取依赖so名称并导出txt文件
背景:算法平台迁移时,涉及一些具体依赖库导出,方便编写cmakelist。
工具名称extract_so.sh
#!/bin/bash# 参数检查
if [ $# -lt 2 ]; thenecho "用法: $0 <目标库路径> <关键字> [输出文件名]eg: ./extract_so.sh mot_start/bin/test opencv ./tmp/tmp_so.txt"exit 1
fiTARGET_SO="$1"
KEYWORD="$2"
OUTPUT_FILE="${3:-filtered_so_list.txt}" # 默认输出文件名# 检查目标文件是否存在
if [ ! -f "$TARGET_SO" ]; thenecho "错误: 文件 $TARGET_SO 不存在"exit 1
fi# # 使用ldd获取依赖,筛选包含关键字的so名,并保存
# ldd "$TARGET_SO" | grep "$KEYWORD" | awk '{print $1}' > "$OUTPUT_FILE"
# 提取匹配的库名,去除lib前缀和.so后缀及版本号
ldd "$TARGET_SO" | grep "$KEYWORD" | awk '{print $1}' \
| sed -E 's/^lib//' \
| sed -E 's/\.so(\.[0-9]+)*$//' \
> "$OUTPUT_FILE"echo "已保存匹配结果到: $OUTPUT_FILE"
工具权限添加
chmod +x extract_so.sh
使用例子
./extract_so.sh mot_start/bin/test pcl ./tmp/tmp_so.txt
保存到文件tmp_so.txt
,个人程序依赖导出结果如下
pcl_segmentation
pcl_features
pcl_visualization
pcl_common
pcl_ml
pcl_filters
pcl_search
pcl_sample_consensus
pcl_kdtree
pcl_octree
pcl_io
pcl_io_ply
###################
好记性不如烂笔头
积跬步期千里
觉得不错的话,记得点赞收藏