Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SCons
RT-Thread4.1.0工程用scons连续编译生成的map文件差异很大
发布于 2022-09-07 15:32:36 浏览:707
订阅该版
Dear recan, 你好, 我们在使用RT-Thread4.1.0的过程中,发现同样的源代码在scons编译后结果不同,这给我们带来了一些麻烦,因为**源代码相同,编译生成的bin文件却不同**。 刚开始所有编译生成的代码都能正常运行,后来我们遇到了一个版本的代码,**编译结果会影响运行结**果。 在编译出某个大小的hex的情况下可以正常运行, 在编译出另一大小的hex的编译结果下不能正常运行, 于是我们开始关注这个问题。 我们的代码连续编译得到的hex文件大小不同(连续编译5次就能复现了) RT-Thread官方发布的源代码连续编译的hex大小也不同(可能要连续编译20次左右能够复现) hex大小差异10~40个数字,但map和bin文件的差异超级大。 **有什么办法可以让它在源文件相同的情况下,每次编译生成bin文件都相同吗?** 1. 我们做过的尝试有: 1)改成单核编译,即scons -j8 改成scons -j1。结果:没有效果; 2)每次build前都清空上一次的编译结果,scons -c。结果:没有效果; 2. 下面是一些有助于您更好理解问题的截图 1)scons执行目录: \rt-thread-4.1.0\bsp\stm32\stm32h750-armfly-h7-tool 2)编译生成文件对比图:   3.rt-thread 4.1.0源码下载地址: https://github.com/RT-Thread/rt-thread/releases/tag/v4.1.0 Best regards, dancer22
查看更多
出出啊
2022-09-08
致男人们:劝说是不会有成果的。 —— 《单向街》
 果然有不一样,这个会有影响吗?
6
个回答
默认排序
按发布时间排序
aozima
2022-09-07
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!
你可以研读一下差分升级相关的文章,应该会有收获。 不同位置会影响`__FILE__`,不同编译时间会影响`__DATE__`。 编译完只链接,同样的环境,理论上是可以得到同样的二进制的。 >在编译出另一大小的hex的编译结果下不能正常运行 需要找出根本原因才行,但和大小没直接关系。
sakumisu
认证专家
2022-09-07
https://github.com/sakumisu
将 rt_show_version 这个函数删除,应该就没问题了
recan
认证专家
2022-09-08
公众号【架构师李肯】主理人,每周赠送10本IT书籍,正在 挑战100+最佳答案,有疑难问题请邀请我回答@_@
谢邀回答,简单梳理了下我的思路,[见水文](https://club.rt-thread.org/ask/article/f33b580e5cfc7923.html)。 希望能够帮助到你尽快找到问题所在。
whj467467222
认证专家
2022-09-08
开源,分享,交流,共同进步
不要着急去怀疑编译器和链接顺序的原因,上面的各位已经提到了 `_DATE_` `_FILE_` 会影响链接的顺序,也就是这个顺序的打乱,导致了最终生产的 BIN 文件的差异。 之前遇到了一个 BUG 就是多了一行 printf 就能正常工作,少了这个就不能正常工作,也就是因为链接位置的改变导致了炸穿的内存没有波及到其他地方,从而出现了一个正常工作的**假象**。 一个不能正常工作的工程,应该有他不能正常工作的现象,例如触发了 `data abort`,不如从这里着手去解决这些问题。
async
2022-09-09
这家伙很懒,什么也没写!
首先建议不要使用scons做产品代码构建,使用任何你喜欢的其他IDE/工具链大概都不会有编译结果不稳定这问题。 我猜是rtt构建工具的老问题:构建工具收集到的文件路径集是个顺序随机的集合,而不是严格有序的集合。比如执行"scons --target=cmake"每次生成的CMakeLists.txt里面的文件排序都不一致,我提过issue [#5745](https://github.com/RT-Thread/rt-thread/issues/5745 "#5745"),但至今应该还没完全解决。 改用其他编译方法就能避开scons的随机性,从而保持编译结果稳定性。 只有部分编译结果存在bug大概是因为存在写溢出,部分编译结果运行时篡改了某些关键字段导致fault,其他编译结果运行篡改的是非关键字段或者空闲区域所以没有表现出问题。
撰写答案
登录
注册新账号
关注者
1
被浏览
707
关于作者
childerxxx
这家伙很懒,什么也没写!
提问
6
回答
4
被采纳
0
关注TA
发私信
相关问题
1
scons不支持python3吗?
2
编译又出现问题
3
BSP目录下做好一个项目后,怎么把发给别人的包裁剪的小...
4
为什么重新scons --target=mdk 后,以前在MDK工程里保存的C文
5
Scons 添加Group,SConscript已经执行,源码却没有添加进工程
6
scons如何指定输出目录?
7
新人求助。
8
想用env 工具自己构建编译环境想用vscode 进行一些简单程序
9
关于scons脚本问题
10
使用scons --target=makefile的问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
五分钟玩转RT-Thread新社区
5
国产MCU移植系列教程汇总,欢迎查看!
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
FATFS文件系统详解
2
PY32移植RT-Thread Nano记录
3
keil+env在STM32H743上实现pwm呼吸灯
4
STM32H7 实现 BootLoader 内 SDRAM 的初始化的注意事项
5
PSoC™ 62 温湿采集功耗测试
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
AT
FinSH
ART-Pi
Bootloader
CAN总线
Hardfault
文件系统
USB
DMA
RT-Thread
线程
SCons
RT-Thread Nano
stm32
MQTT
ESP8266
ota
WIZnet_W5500
RTC
rt-smart
UART
flash
rtthread
packages_软件包
freemodbus
潘多拉开发板_Pandora
I2C
cubemx
FAL
定时器
PWM
BSP
AB32VG1
ADC
中断
消息队列_msg_queue
SDIO
msh
keil
Debug
编译报错
socket
LVGL
SFUD
C++_cpp
本月问答贡献
xiaorui
3
个答案
1
次被采纳
rcp
3
个答案
1
次被采纳
RTT_逍遥
2
个答案
1
次被采纳
WKJay
1
个答案
1
次被采纳
JonasWen
1
个答案
1
次被采纳
本月文章贡献
小权一句两句
1
篇文章
4
次点赞
喵小黑
1
篇文章
4
次点赞
jaffer
1
篇文章
2
次点赞
Agony_L
1
篇文章
1
次点赞
疯洋CrazySheep
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部