完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
论坛里有使用过gcc O2编译后以太网无法正常工作的吗。目前的现象是使用debug O0编译,以太网是正常使用的;使用O2编译后遇到上电有时正常,有时不正常,不正常的情况下drv_eth下的中断函数都不再触发了,lwip那边DHCP一直获取不到。 |
|
相关推荐
5个回答
|
|
代码有bug, gcc开-Wall拉满警告,把所有警告解决就行
|
|
|
|
GCC提供的优化选项,包括-O2,通常能够显著地提高程序性能,但这种优化也可能导致程序运行时偶发的bug。
原因在于优化选项往往会改变代码的执行顺序和内存布局,有时候甚至会导致未定义的行为。这些问题在O0优化选项下不会出现,因为这个选项不对代码进行任何优化,使代码执行顺序和内存布局都保持原样。 可能的具体原因包括: 优化时可能会改变控制流程,例如删除一些看似无用的代码,但实际上是程序正确性的必要条件。这种情况下,可能导致函数调用栈的异常、指针操作错误等问题。 编译器可能使用寄存器以及各种寄存器优化技巧,导致程序状态与内存中的状态不一致。这种情况下,可能导致读写内存或寄存器的错误。 对于某些编译器等工具本身存在的bug,某些优化选项可能会使这些bug更容易被激发。 综上所述,虽然优化选项可以加速程序的执行,但会导致更多的风险和困难。在出现偶发的bug时,建议尝试使用O0选项重新编译,并仔细分析、定位问题,找到根本原因并解决它 |
|
|
|
把告警全部消除也还是不行
|
|
|
|
好像 -Wall并不是所有警告都开,还有很多其他警告,另外编译前先clean一下,否则缓存,警告就没了
|
|
|
|
如果您的代码在使用-O2优化时出现了bug,那么建议您使用以下警告选项进行编译:
-Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wformat -Wstrict-aliasing -Wstrict-overflow 这些选项将启用许多警告,并帮助您找到一些常见的编程错误。下面是每个选项的含义: -Wall:启用所有警告选项。 -Wextra:启用额外的警告。 -Wpedantic:启用严格的ISO C标准警告。 -Wconversion:启用类型转换警告。 -Wsign-conversion:启用signed/unsigned类型之间的转换警告。 -Wformat:启用格式字符串警告。 -Wstrict-aliasing:启用别名声明严格实施警告。 -Wstrict-overflow:启用严格的算术溢出警告。 建议您在开发过程中使用这些警告选项,以帮助找到潜在的编程错误。如果您遇到警告,请仔细检查代码,并修复潜在问题,以确保代码质量和安全性。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
883 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3025 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1409 浏览 0 评论
2039 浏览 0 评论
1574 浏览 0 评论
75124 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 12:19 , Processed in 0.678758 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号