提问人:JeffV 提问时间:9/7/2008 更新时间:10/3/2008 访问量:500
有没有办法从构建脚本输出中解析依赖关系树?
Is there a way to parse a dependency tree from a build script output?
问:
我有一个继承的项目,它使用构建脚本(不是make)来构建项目并将其与各种库链接。
当它执行构建时,我想解析构建输出,以确定链接到最终可执行文件的实际静态库是什么以及在哪里,以及它们来自哪里。
该脚本正在编译并与 GNU 工具链接。
答:
0赞
Leon Timmermans
9/7/2008
#1
静态库,这在这方面使生活更加困难。对于动态库,您可以在生成的可执行文件上使用 ldd 并完成它。最好的选择是某种配置文件。或者,您可以尝试查找 gcc/ld 的 -l 参数。这些库用于指定库。你可以写一个脚本来从输出中提取它,尽管我怀疑你必须手动完成,因为当你知道脚本应该寻找什么时,你可能已经知道答案了。
0赞
Xavier Nodet
9/7/2008
#2
使用Perl等工具做一些有用的事情是可能的,但你必须提供更多的细节。另一方面,简单地分析脚本可能会更容易......
1赞
Ben Collins
9/7/2008
#3
您可以尝试使用该工具。给定正确的选项,它将查看二进制文件(存档或链接图像)并告诉您哪些对象链接到其中。nm
实际上,这是我在工作中使用的一句话:
#!/bin/sh
nm -Ag $* | sed 's/^.*\/\(.*\.a\):/\1/' | sort -k 3 | grep -v ' U '
找出未定义符号的罪魁祸首。只需砍掉最后一个 grep 表达式,它就应该能给你你想要的东西。
评论