【问题标题】:Cannot use GCC's builtin functions on Cortex-A9无法在 Cortex-A9 上使用 GCC 的内置函数
【发布时间】:2014-12-09 15:33:01
【问题描述】:

对于嵌入式项目(裸机)我需要使用 memc** 函数。虽然我没有 禁用内置函数我总是收到链接器错误;例如:

对 `memcmp' 的未定义引用

无论我使用:memcmp 还是 __builtin_memcmp!

启用内置插件有什么我错过的吗?

我的编译选项是:-g -Wall -mcpu=cortex-a9

【问题讨论】:

  • 你说它是“裸机”——你链接一个 C 库吗?
  • gcclib 不包括 C 库调用,您需要 C 库。尝试在最后添加-lc?或者可能是在链接器-Xlinker -lc 中?或者只是不要对裸机使用 C 库调用,因为您没有用于实现库的操作系统。
  • 没有。我不能链接 C 库;这就是为什么我想使用内置函数...我认为我可以使用 memcpy/memcmp 函数而不依赖 C lib。
  • 确定 memcmp/cpy/set 等不依赖于操作系统,但其他 C 库调用...
  • @dwelch:有没有办法使用这些内置函数?

标签: gcc arm built-in cortex-a


【解决方案1】:

__builtin 有点撒谎。如果存在,它将可选地使用内置实现。否则它将调用库函数。您将需要在您自己的代码或 C 库中提供这些函数的实现。请注意,“C 库”并不意味着完整的操作系统 libc,有很多裸机 C 库不包含依赖于操作系统的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    相关资源
    最近更新 更多