全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux系统下查看elf文件的方法

时间:2023-08-25 16:17

人气:

作者:admin

标签: 动态库  Linux  嵌入式  Ubuntu 

导读:作为一个嵌入式开发人员,交叉编译是必须进行的步骤。那么,如何判断编译生成的文件(动态库,静态库,可执行程序)是否符合目标平台的格式呢?下面分别介绍这 3 种文件的查看...

1. 前言

作为一个嵌入式开发人员,交叉编译是必须进行的步骤。那么,如何判断编译生成的文件(动态库,静态库,可执行程序)是否符合目标平台的格式呢?下面分别介绍这 3 种文件的查看方式。

测试环境:

虚拟机:ubuntu 16.04

目标环境:imx8q,arm64

测试程序:FastDDS

2. 查看可执行程序

使用 file 命令。

file DDSHelloWorldExample

结果:

图片

3. 查看动态库

和可执行程序一样,也使用 file 命令。

file libfastrtps.so.2.3.0

结果:

图片

4. 查看静态库

也使用 file 命令?

file libfoonathan_memory-0.7.0.a

结果:

图片

这个结果证明 file 命令是行不通的。那应该怎么做呢?使用 readelf

4.1 readelf

readelf 用于显示 ELF 文件的信息 。我们这里使用其 -h 参数。

readelf -h libfoonathan_memory-0.7.0.a

结果( 有意外收获 ):

图片

readelf -h 的输出结果可以看出静态库是符合 AArch64 平台的。但是有多行的 Machine: AArch64 。这其实是静态库中 每一个.o 文件的信息。因此,我们可以使用该命令查看静态库中包含了哪些 .o 文件。

readelf -h libfoonathan_memory-0.7.0.a | grep "File:"

结果:

图片

然后,我们使用命令 ar -t 命令查看上述结果是否正确。

ar -t libfoonathan_memory-0.7.0.a

结果:

图片

5. 结语

其实,动态库、静态库和可执行程序都可以使用 readelf -h 命令进行查看适用的目标平台类型。但是查看动态库和静态库的适用平台信息时还是 file 命令方便、直观一些。

我们可以使用 readelfar 命令查看静态库中包含哪些 .o 文件。如果想知道可执行程序和动态库链接了哪些动态库,该如何做呢?答案是使用 ldd 命令。请移步至这篇文章。

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信