linux - 是否可以让使用不同选项编译的运行时库和应用程序一起顺利运行?

标签 linux arm libraries

我正在研究 Frescale 的 iMX6quad Arm Cortex A9 CPU。操作系统是Linux。 它的运行时库已经为 armv5 架构编译,带有 -mfloat-abi=softfp 我想运行一个可以为 armv7-a arch 编译的应用程序,甚至可以在编译时启用硬浮点选项 (-mfloat-abi=hard)。

我是否应该期望应用程序能够在 ARM 上正常运行? 显然我不希望在“硬件”软件中执行对运行时库的访问,但我的代码位与“硬” float 一起工作?

也可能相反? 也就是说,如果库是为特定处理器编译的,并且所有硬件加速都是可能的,我是否可以(然后)使用 softfp ABI 编译一个简单的应用程序并期望它在 ARM 开发板上运行良好?

谢谢你的帮助

最佳答案

ARM float ABI 顾名思义是二进制接口(interface)。如果您有两个二进制文件,例如一个可执行文件和一个共享对象(动态库),它们需要具有相同的 ABI,否则它们将无法正常通信。

在细节上,二进制接口(interface)定义函数期望如何传递它们的参数,它们需要保留哪些寄存器。

例如,hardsoftfp ABI 之间的区别是 softfp 函数期望它们的浮点参数在常规寄存器中,而在硬约定函数中期望浮点参数在浮点寄存器中.

关于linux - 是否可以让使用不同选项编译的运行时库和应用程序一起顺利运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140572/

相关文章:

c - 如何使用C读取文件夹中的所有文件

linux - tiny6410 的触摸屏在 linux 上不工作

c++ - 成员结构位域元素的初始化列表初始化导致 IAR ARM 中的错误

c - C 库应该如何管理错误?

c++ - 即使我修改了 LD_LIBRARY_PATH,也找不到我的共享库

c - 如何列出 *.so C 库中的所有函数

linux - ps 命令是否检测到 crontab?

regex - 基本的 Linux 正则表达式

assembly - 在汇编中除以 10 未给出正确结果

google-apps-script - 编辑库中 Google 脚本的早期版本