【问题标题】:How to find out what floating point is libc using?如何找出 libc 使用的浮点数?
【发布时间】:2023-03-08 18:31:01
【问题描述】:

我正在使用带有 GNU GCC 4.9.2 的 redhawk 6.5.8 系统。我下载了源代码并为平台编译了 GCC 作为本机编译器。

我现在需要开始编译应用程序,但如您所知,我的应用程序使用的浮点数必须与我正在使用的 libc 版本兼容。

我如何知道我系统中的 libc (libc.so.6) 是否使用 soft-float 和 hard-float 构建?

我试过很多命令,比如ldd、objdump、readelf还是不清楚。

非常感谢

【问题讨论】:

  • 当你使用不兼容的浮点数时,链接器不应该警告你吗?看到这个问题:stackoverflow.com/questions/3321468/…
  • 是的,但不幸的是,这并不能真正回答我的问题。除此之外,我想知道一种方法来找出 libc 是如何编译的,是软浮点还是硬浮点。谢谢!
  • gcc -v 将显示使用的 fpu 选项。默认 libc 通常使用相同的 fpu 选项进行编译。

标签: gcc libc


【解决方案1】:

如果您有可用的readelf 二进制文件,您可以按照此处[1] 的说明进行操作,如下所示:

readelf -a /lib/libm.so.6 | grep FP

链接标志 Tag_ABI_HardFP_use 将是一个很好的寻找线索,但可能还有其他我不知道的标志。那个对我有用。

[1]https://www.cnx-software.com/2013/04/22/how-to-detect-if-an-arm-elf-binary-is-hard-float-armhf-or-soft-float-armel/

【讨论】:

    猜你喜欢
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2021-08-19
    • 1970-01-01
    相关资源
    最近更新 更多