cvs*_*ave 80 linux archive 32bit-64bit
我们在Linux中分发64位和32位版本的静态库.在对客户进行故障排除时,我希望我的诊断shell脚本通过检查.a存档文件来快速消除问题,以确定它是32位还是64位.我遇到的方法不够优雅:
提取.o成员并询问"file"命令(例如,ELF 32位等)
开始包括编码指示的虚拟成员,例如32bit.o/64bit.o并使用"ar -t"进行检查
我试过"字符串xyz.a | grep 32",但这不适用于版本.这不是一个令人心碎的问题,但如果你知道一个优雅的解决方案,我想知道.
caf*_*caf 114
objdump
似乎是最好的方式:
objdump -f libfoo.a | grep ^architecture
Run Code Online (Sandbox Code Playgroud)
小智 29
最简单的方法是使用file命令.
$file <.so file or .a file>
Run Code Online (Sandbox Code Playgroud)
哎呀,缺少 sed 意味着它正在显示许多项目。
只是在一个答案中:
count=$(nm foo.a | grep '^0' | head -1 | sed 's/ .*//' | wc -c)
((count == 17)) && echo 64bit
((count == 9)) && echo 32bit
((count == 0)) && echo '??bit'
Run Code Online (Sandbox Code Playgroud)
它应该如何工作:
在 32 位环境中,您将获得由 8 个十六进制数字组成的地址,添加新行将为您提供9
,在 64 位环境中,您将获得由 16 个十六进制数字组成的地址,添加新行将为您提供17
。
归档时间: |
|
查看次数: |
76163 次 |
最近记录: |