rtthread官方文档里已经对C++全局对象构造函数的调用进行了说明。但只介绍了用gcc编译的情况。这里对平时用keil开发的进行一个补充。这里用到的编译工具是armcc或armclang,对应的连接脚本是.map文件。
正常情况下在官方的BSP下menuconfig使能C++功能即可,C++程序里会调用分配的空间。
但最近有个项目工程里的文件位置是用户自己设定的,运行程序后进入C++构造全局对象,在malloc分配空间的时候会进入断言,打印是system_heap为空。
找了半天发现问题出在rtthread工程里的rtconfig.py。
可以看到连接的map文件是绝对地址,map文件如果不在工程根目录下就会连接不到,程序也就找不到堆栈分配。
RT-Thread C++全局对象构造函数的调用【填坑】
最新推荐文章于 2024-09-16 06:00:00 发布