首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止ArmClang向标准C库添加调用

防止ArmClang向标准C库添加调用
EN

Stack Overflow用户
提问于 2019-11-19 07:23:14
回答 1查看 409关注 0票数 1

我正在STM32H753上对Keil微视觉IDE进行评估。

我正在做ARMCC5和AC6在不同优化级别上的编译器比较。AC6是基于Clang的。

我的代码没有使用memcpy,而且在项目设置中没有选中"Use MicroLIB“,但是我的代码中的每字节复制循环中的基本字节替换为带有AC6的memcpy (仅在”高“优化级别中)。这种情况不会发生在ARMCC5身上。

我试着使用编译选项来避免这种情况,正如here-ffreestanding-disable-simplify-libcalls所描述的那样,在编译器和链接器级别都没有改变(对于第二个选项,我收到一条错误消息,表示不支持该选项)。

在ARMCLANG参考指南中,我找到了防止(??)的选项-nostdlib -nostdlibinc。编译器使用任何函数的标准库。

但是,我仍然需要math.h函数。

您知道如何防止clang使用来自标准C语言库的函数,这些函数不是在代码中明确调用的

编辑:这里是一个快速和肮脏的可复制的例子:https://godbolt.org/z/AX8_WV请不要讨论这个例子的质量,我知道它是愚蠢的!这只是为了理解这个问题

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-21 13:43:48

gcc对memcpy、memset和类似的函数非常了解,甚至被称为“内建函数”。如果您不希望默认使用这些函数,只需使用命令行选项-fno-builtin

https://godbolt.org/z/a42m4j

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

https://stackoverflow.com/questions/58928604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档