【发布时间】:2011-08-05 15:11:11
【问题描述】:
我们在 Linux 中分发 64 位和 32 位版本的静态库。在对客户进行故障排除时,我希望我的诊断 shell 脚本通过检查 .a 存档文件以确定它是 32 位还是 64 位来快速消除问题。我想到的方法不够优雅:
提取一个 .o 成员并询问“文件”命令(例如,ELF 32 位等)
开始包括一个虚拟成员,该成员被编码以指示,例如32bit.o/64bit.o 并使用“ar -t”检查
我尝试过“strings xyz.a | grep 32”,但这在版本中效果不佳。不是一个令人心碎的问题,但如果你知道一个优雅的解决方案,我想知道。
【问题讨论】:
-
我知道stackoverflow.com/questions/184502/…,正在寻找更好的解决方案。
-
另一个问题中的解决方案似乎很巧妙地解决了这个问题,但一个快速的方法是 nm foo.a | grep '^0' |头-1 | wc -c - 如果结果为 17(16+1 == 8bytes + 1 char 用于换行),则为 64bit,如果为 9,则为 32bit(8+1 == 4bytes + 1 char 用于换行)
-
如果我得到 14 怎么办? o_0
标签: linux 32bit-64bit archive