1、查看文件是否是被strip过?
有时候,我们需要把没有strip过的文件放进文件系统,用来给设备调试。
比如有如下文件:
ld-2.31.so libBrokenLocale-2.31.so libgcc_s.so.1 liblsan.so.0.0.0 libnss_db-2.31.so libpcprofile.so libssp.so.0 libubsan.so.1
ld-linux-aarch64.so.1 libBrokenLocale.so.1 libgfortran.so.5 libm-2.31.so libnss_db.so.2 libpthread-2.31.so libssp.so.0.0.0 libubsan.so.1.0.0
libanl-2.31.so libc-2.31.so libgfortran.so.5.0.0 libmemusage.so libnss_dns-2.31.so libpthread.so.0 libstdc++.so.6 libutil-2.31.so
怎么查看这些库文件是否被strip过呢?使用file命令即可,以ld-2.31.so 为例。
file ld-2.31.so
ld-2.31.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=76ab17ea8b6586fa64b134f99d7775d0073dd617, with debug_info, not stripped
在文件最后,我们可以看到这个文件是没有被strip过的。
2、查看库使用的编译器版本
命令:strings xxxxx | grep GCC
xxxxx 可以是动态库、静态库和可执行程序’
比如查看libcos.a的编译器版本信息:
strings libcos.a | grep GCC
GCC: (Ingenic Linux-Release5.1.4.1-Default(xburst2(fp64)+glibc2.29+Go language) 2022.08-08 10:51:21) 7.2.0