1. 前言
作为一个嵌入式开发人员,交叉编译是必须进行的步骤。那么,如何判断编译生成的文件(动态库,静态库,可执行程序)是否符合目标平台的格式呢?下面分别介绍这 3 种文件的查看方式。
测试环境:
虚拟机:ubuntu 16.04
测试程序:FastDDS
2. 查看可执行程序
使用file
命令。
fileDDSHelloWorldExample
结果:
3. 查看动态库
和可执行程序一样,也使用file
命令。
filelibfastrtps.so.2.3.0
结果:
4. 查看静态库
也使用file
命令?
filelibfoonathan_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
命令方便、直观一些。
我们可以使用readelf
和ar
命令查看静态库中包含哪些 .o 文件。如果想知道可执行程序和动态库链接了哪些动态库,该如何做呢?答案是使用 ldd 命令。请移步至这篇文章。
- 嵌入式
+关注
关注
5031文章
18685浏览量
296384 - Linux
+关注
关注
87文章
11090浏览量
207607 - 静态库
+关注
关注
0文章
21浏览量
7404 - Ubuntu
+关注
关注
5文章
545浏览量
29233 - 动态库
+关注
关注
0文章
16浏览量
6205
发布评论请先登录
相关推荐
嵌入式学习——ElfBoardELF1板卡 重新打包文件系统的方法
i.MX6ULL——ElfBoardELF1板卡 windows 与 ubuntu系统互传文件的方法
嵌入式bin文件和elf文件重点

简单介绍一下Linux中ELF格式文件

评论