Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我如何知道ARM库是否使用了hardfp?

我如何知道ARM库是否使用了hardfp?
EN

Stack Overflow用户
提问于 2013-12-12 22:28:54
回答 3查看 13.2K关注 0票数 21

我没有权限使用build命令,我的系统中只有这个库。

我想我可以构建一个可以链接到它并进行测试的hardfp可执行文件,但我想知道是否有更简单的方法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-12 23:10:19

执行readelf -A library.so:如果打印的标记列表包含Tag_ABI_VFP_args: VFP registers,则它是hardfp二进制文件,否则假定为softfp

例如,readelf -A /lib/arm-linux-gnueabihf/libm.so.6将生成

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_HardFP_use: SP and DP
  Tag_ABI_VFP_args: VFP registers
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_CPU_unaligned_access: v6

另一方面,readelf -A /lib/arm-linux-gnueabi/libm.so.6生产

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: int
  Tag_ABI_optimization_goals: Aggressive Speed
  Tag_CPU_unaligned_access: v6
票数 21
EN

Stack Overflow用户

发布于 2013-12-12 23:07:55

使用readelf

下面是Poco的一个ARM版本的一些示例输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ readelf libPocoFoundation.so -h
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           ARM
  Version:                           0x1
  Entry point address:               0x61e50
  Start of program headers:          52 (bytes into file)
  Start of section headers:          1078048 (bytes into file)
  Flags:                             0x5000402, has entry point, Version5 EABI, hard-float ABI
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         7
  Size of section headers:           40 (bytes)
  Number of section headers:         28
  Section header string table index: 27

在标志部分,它将列出有关elf文件的数据。这些在ARM ELF Specification中定义,请参阅表4-2。在我的例子中,这是用一个硬浮点编译器构建的,所以硬浮点被列为一个标志。

在软浮点库上,标志行如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Flags: 0x5000202, has entry point, Version5 EABI, soft-float ABI
票数 7
EN

Stack Overflow用户

发布于 2013-12-12 23:08:23

使用objdump -d进行反汇编,然后使用grep执行一些浮点命令。我不确定objdump是否会生成符合UAL的程序集,所以也要尝试旧的语法。观察寄存器名称可能比命令助记符更容易,但可能会有误报。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20555594

复制
相关文章
【Android】如何知道某个Activity是否在前台?
转载自zrong's blog 有一个Android应用包含包含一个后台程序,该程序会定期连接服务器来实现自定义信息的推送。但是,当这个应用处于前台的时候,后台程序就没有必要连接服务器了。这样可以节省网络资源,也更省电。 用什么方法知道该应用是否处于前台呢? 网上搜到的方法大多数都是使用下面的代码: ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); //获得task列表 List<ActivityM
Gavin-ZYX
2018/05/18
1.5K0
如何知道自己是否适合做产品经理?
大部分产品经理都是从其他岗位转型过来的。程序员、项目、运营、设计等岗位都是非常适合转型产品经理的。那么怎么知道自己是否适合做产品经理的工作呢?
石云升
2022/08/25
3170
Mono 3.2.7发布,JIT和GC进一步改进
Mono 3.2.7已经发布,带来了很多新特性,如改进的JIT、新的面向LINQ的解释器以及使用了64位原生指令等等。 这是一次主要特性发布,累积了大约5个月的开发工作。看上去大部分改进都是底层的性能改进、优化以及更好的兼容性。以下是一些值得重点强调的特性: 对ARM上的HardFP ABI(Application Binary Interface,应用程序二进制接口)提供了初步支持。这就使得Mono可以应用于更新的Linux版本上,同时可以针对这些目标平台生成更好的代码。要进一步了解,可以阅读 HardF
张善友
2018/01/30
5810
在C中,如何知道动态分配是否成功
C语言使用 malloc函数动态在堆上分配内存。malloc根据字节数的参数。如果无法分配内存,该函数将返回指向已分配内存的指针或 NULL 指针。
mariolu
2021/11/06
2.7K0
如何知道合作伙伴是否成功接收EDI文件?
EDI,即电子数据交换,可用于企业之间的业务数据自动传输。EDI软件在服务器后台运行时,所有的数据处理都是自动进行的,业务数据会在处理完成后自动发送给合作伙伴,无需人工干预。在和合作伙伴接入EDI的时候,很多客户都会提出这样的问题:对接成功后,如何知道对方成功接收了我发出的文件呢?
知行软件EDI
2022/02/11
9320
如何知道合作伙伴是否成功接收EDI文件?
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
我们知道很多时候我们有一个需求,我们需要把插入数据后的id返回来,以便我们下一次操作。
秦怀杂货店
2020/12/26
8610
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
使用mybatis的时候,经常发现一个需求,我怎么知道自己是不是增加/修改/删除数据成功了?
秦怀杂货店
2022/02/15
1.4K0
Mybatis【7】-- Mybatis如何知道增删改是否成功执行?
我知道你不知道,我到底知不知道?
在计算机面试中,逻辑类题目是规模以上互联网公司的必考题。由于题目花样百出,准备难度较大,题海战术可能不是推荐的做法。在这个系列里,我将精选十道非常经典的逻辑题,希望能帮助你找到解题思路 / 技巧。如果能帮上忙,请务必点赞加关注,这真的对我非常重要。
用户9995743
2022/12/22
4990
一日一技:为什么网站知道我的爬虫使用了代理?
实际上,网站要识别你是否使用了代理,并不一定非要什么高深的反爬虫机制,也不需要使用AI识别用户行为。下面这几种情况,要识别代理简直是易如反掌。
青南
2022/04/07
1.5K0
一日一技:为什么网站知道我的爬虫使用了代理?
python的多线程是否没有用了[通俗易懂]
相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 这主要跟运行的代码有关: 1、 CPU密集型代码 (各种循环处理、计数等等 ),在这种情况下,由于计算工作多, ticks计数很快就会达到 100阈值,然后触发 GIL的释放与再竞争 (多个线程来回切换当然是需要消耗资源的),所以 python下的多线程遇到 CPU密集型代码时,单线程比多线程效率高。 IO密集型代码 (文件处理、网络爬虫等 ),多线程能够有效提升效率 (单线程下有 IO操作会进行 IO等待,造成不必要的时间浪费,而开启多线程能在 线程 A等待时,自动切换到线程 B,可以不浪费 CPU的资源,从而能提升程序执行效率 )。
全栈程序员站长
2022/09/06
4470
如何知道你的网络安全工具是否有效运行
现在许多企业或组织已投资了数十种网络安全工具。但不确定他们是否按预期工作。例如,如果安全信息和事件管理(SIEM)工具报告的成功阻止攻击的百分比是虚假报告,那么其中实际发生的阻止攻击占比又是多少?零百分比?百分之五十?
FB客服
2019/09/29
6260
用了这么久的数据库连接池,你知道原理吗?
原文 | blog.csdn.net/shuaihj/article/details/14223015
用户1516716
2019/12/10
4050
用了这么久的数据库连接池,你知道原理吗?
如何使 Grafana as code
Grafana Dashboard 可以做很多事情,但您知道其实是可以通过代码来配置管理 Grafana Dashboard 的吗?本文是 Grafana Labs 软件开发工程师 Malcolm Holmes 和 Inuits 的开源顾问 Julien Pivotto 在 FOSDEM 2020 上的 topic 演讲记录。演讲中,两人讨论了如何使用代码来管理您的 Grafana 实例,并介绍了一些使用 Jsonnet[1] 的秘诀和技巧以及 Grafonnet[2](一个用于生成 Grafana Dashboard 的 Jsonnet 库)。
郭旭东
2020/12/30
1.7K0
如何使 Grafana as code
你是否知道Redis为什么有1️⃣6️⃣ 个数据库?
链接:https://mp.weixin.qq.com/s/LUDTF_JoJ_z9VkQhi4z4zQ
架构师修行之路
2020/02/11
1.1K0
关于postman你知道这些就够用了
postman一直都有在用,只是没系统地学过,正好生产有问题需要我传不同的参数调用同一个接口的方式去处理,于是周末花了三个多小时系统地学习了一下。
小小明童鞋
2020/03/23
1.9K0
关于postman你知道这些就够用了
用了这么久的数据库连接池,你知道原理吗?
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。
Bug开发工程师
2019/06/17
1.2K0
用了这么久的数据库连接池,你知道原理吗?
用了这么久的数据库连接池,你知道原理吗?
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。
Spark学习技巧
2019/08/16
4140
用了这么久的数据库连接池,你知道原理吗?
用了这么久的数据库连接池,你知道原理吗?
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。
好好学java
2019/12/05
3800
用了这么久的数据库连接池,你知道原理吗?
Re: 如何知道Hibernate已经成功运用了二级缓存EhCache
    问题是DEBUG之后我也不清楚应该看哪里!      DEBUG的信息实在是太多,很难看全! 能否给个实例,指出那里显示了使用了二级缓存!
阿敏总司令
2019/02/28
3720
点击加载更多

相似问题

我如何知道我是否使用ARM使用Windows?

27

我如何知道我的系统上是否启用了ARM的XN (从不执行)位支持?

10

我如何知道我的PHP是否使用了Autoloader?

21

我如何知道我的程序是否启用了ARC?

40

如何知道我是否引用了正确的组件?

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文