Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
SCons
RT-Thread4.1.0工程用scons连续编译生成的map文件差异很大
发布于 2022-09-07 15:32:36 浏览:1208
订阅该版
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)编译生成文件对比图: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220907/cd6cc1a2ccff2778f8914622cd2f8396.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220907/45821dbd091daabee0c30612d7484152.png) 3.rt-thread 4.1.0源码下载地址: https://github.com/RT-Thread/rt-thread/releases/tag/v4.1.0 Best regards, dancer22
查看更多
出出啊
2022-09-08
恃人不如自恃,人之为己者不如己之自为也
![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20220908/f89046472751004189239ee13f38200b.png) 果然有不一样,这个会有影响吗?
6
个回答
默认排序
按发布时间排序
aozima
2022-09-07
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
你可以研读一下差分升级相关的文章,应该会有收获。 不同位置会影响`__FILE__`,不同编译时间会影响`__DATE__`。 编译完只链接,同样的环境,理论上是可以得到同样的二进制的。 >在编译出另一大小的hex的编译结果下不能正常运行 需要找出根本原因才行,但和大小没直接关系。
sakumisu
认证专家
2022-09-07
https://github.com/sakumisu
将 rt_show_version 这个函数删除,应该就没问题了
李肯陪你玩赚嵌入式
认证专家
2022-09-08
2022年度和2023年度RT-Thread社区优秀开源布道师,COC深圳城市开发者社区主理人,专注于嵌入式物联网的架构设计
谢邀回答,简单梳理了下我的思路,[见水文](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
被浏览
1.2k
关于作者
childerxxx
这家伙很懒,什么也没写!
提问
8
回答
6
被采纳
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
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
TinyUSB Demo运行教程
2
RT-Thread学习大礼包一键带走!
3
freemodbus从机调试说明
4
【1024】瑞萨 RA 系列 BSP 制作与适配最新版本的 Keil 、 RSC、固件,较新的 FSP
5
基于 RT-Thread 星火一号开发板的俄罗斯方块
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
cubemx
PWM
flash
packages_软件包
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
出出啊
1516
个答案
342
次被采纳
小小李sunny
1440
个答案
289
次被采纳
张世争
799
个答案
171
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
4
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部