0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CHANBAEK 来源:大川搬砖 作者:sdc123 2023-08-25 16:17 次阅读

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 命令。请移步至这篇文章。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4983

    文章

    18295

    浏览量

    288597
  • Linux
    +关注

    关注

    87

    文章

    10992

    浏览量

    206744
  • 静态库
    +关注

    关注

    0

    文章

    21

    浏览量

    7387
  • Ubuntu
    +关注

    关注

    5

    文章

    534

    浏览量

    28847
  • 动态库
    +关注

    关注

    0

    文章

    16

    浏览量

    6194
收藏 人收藏

    评论

    相关推荐

    linux查看网卡流量的六种方法

    本文介绍了linux查看网卡流量的六种方法linux系统中使用nload、iftop、io
    发表于 07-25 06:29

    嵌入式学习板-ElfBoard ELF 1 固定CPU频率的方法

    。 例如固定CPU频率为198MHz,具体修改方法有两种1.修改文件系统 当用户有修改CPU频率需求时,ELF 1支持通过指令的方式调节CPU频率。 (1)设置为用户模式,修改频率为198000
    发表于 10-25 09:47

    i.MX6ULL——ElfBoard ELF1板卡 如何重新打包文件系统

    1.拷贝ELF1开发板资料包\\\\04-烧写镜像\\\\04-0 eMMC镜像目录下的rootfs.tar.bz2到开发环境的任意目录,比如/home/elf。 2.创建存放目标文件系统
    发表于 11-06 09:52

    嵌入式学习——ElfBoard ELF1板卡 重新打包文件系统方法

    1.拷贝ELF1开发板资料包\\\\04-烧写镜像\\\\04-0 eMMC镜像目录下的rootfs.tar.bz2到开发环境的任意目录,比如/home/elf。 2.创建存放目标文件系统
    发表于 11-06 09:55

    i.MX6ULL——ElfBoard ELF1板卡 搭建NFS的方法来啦

    / 挂载成功后,查看/mnt目录,会看到刚才解压的文件系统: root@ELF1:~# ls /mnt/ test
    发表于 11-30 15:37

    i.MX6ULL——ElfBoard ELF1板卡 windows 与 ubuntu 系统互传文件方法

    的:内核源码 linux-4.1.15-elf1.tar.bz2、文件系统(本节以 rootfs.tar.bz2 为例)、命令行测试程序 elf1_cmd_watchdog.c 放到 Windows
    发表于 12-02 09:27

    I.MX6ULL-ElfBoard ELF1板卡 获取内核源码的方法

    linux-4.1.15-elf1.tar.bz2 解压完成之后使用ls命令查看Linux源码目录: Linux内核目录下有很多的文件
    发表于 12-16 09:41

    Linux文件系统的反删除方法

    Linux文件系统的反删除方法 作为一个多用户、多任务的操作系统Linux下的文件一旦被删除
    发表于 03-29 10:39 669次阅读

    嵌入式bin文件elf文件重点

    执行raw binary很简单,只需要将程序加载到其起始地址,就可以执行; 执行ELF程序则需要一个ELF Loader。 现在知道了吧,uboot和Linux kernel启动的时候是没有E
    的头像 发表于 05-15 11:04 8805次阅读
    嵌入式bin<b class='flag-5'>文件</b>和<b class='flag-5'>elf</b><b class='flag-5'>文件</b>重点

    简单介绍一下LinuxELF格式文件

    ELF(Executable and Linkable Format)即可执行连接文件格式,是一种比较复杂的文件格式,但其应用广泛。
    发表于 04-27 19:09 2.6w次阅读
    简单介绍一下<b class='flag-5'>Linux</b>中<b class='flag-5'>ELF</b>格式<b class='flag-5'>文件</b>

    使用Linux命令lsof查看进程打开和查看文件的说明

    linux命令 — lsof 查看进程打开那些文件 或者 查看文件给那个进程使用对调试文件有很好
    发表于 10-28 08:00 0次下载

    虚拟机:Linux查看tar包文件内容的方法

    虚拟机:Linux查看tar包文件内容的方法
    的头像 发表于 06-22 16:49 6260次阅读

    Linux系统如何解析ELF文件

    也就是说,掌握了 ELF 文件的结构和内容,是理解编译、链接和程序执行的基础。
    的头像 发表于 04-10 16:36 2964次阅读

    如何在Linux查看隐藏文件

    在windows可以查看隐藏的文件。在Linux中也可以查看隐藏文件且非常容易。要查看隐藏
    的头像 发表于 01-04 17:31 1.5w次阅读

    Linux系统中的10个常用的文本查看命令

    当你需要查看Linux系统中的文本文件时,使用文本编辑器可能会比较繁琐,特别是当你只需要查看文件
    的头像 发表于 06-24 11:44 9708次阅读