Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
bug反馈
V5.0.2
RT-Thread-5.0.2 在x86-ubuntu 平台编译出错, 其他平台可能也会有类似的问题, 作者自己检查吧
发布于 2024-04-01 03:02:56 浏览:536
订阅该版
[tocm] 今天, 我在x86 系统上面首次尝试玩RT-Thread-5.0.2, 第一次做编译RT-Thread-5.0.2 的时候, 遇到的问题, 这里都做反馈, 已成功编译成功, 有两个问题是比较麻烦的: 1.`rt-thread-5.0.2/libcpu/ia32/cpuport.c` 文件, 应该是作者更新了`rt-thread-5.0.2/include/rthw.h`, 却没有更新平台专用的cpuport.c 文件, 导致出错!! 至少x86 平台是这样; 2.`#include
` 在x86 平台上面, 有很多差异, 需要强制改正; # 详细, 看看编译实录吧, 忙 # 声明: 本攻略, 适用于RT-Thread-5.0.2 ## 解压源码 `unzip ./rt-thread-5.0.2.zip` # 进入到平台的关键目录 ``` cd ./rt-thread-5.0.2 cd ./bsp/x86 ``` 设置RTT 关键的编译信息(scons 是一个python 编译工具集, 通过`*.py` 脚本来控制编译行为的, 在RTT 中, 这个控制脚本是`./rtconfig.py`): `vim rtconfig.py` 修正EXEC_PATH(默认是win 平台的RTT 路径, 注释掉) ```python #EXEC_PATH = os.getenv('RTT_EXEC_PATH') or 'E:/Program Files/CodeSourcery/Sourcery_CodeBench_Lite_for_IA32_ELF/bin' EXEC_PATH = os.getenv('RTT_EXEC_PATH') or '/usr/bin' ``` 修正PREFIX(默认是: i386-unknown-elf- 的交叉编译前缀, pc 安装的gcc 工具链是没有前缀的, 直接去掉) ```python #PREFIX = 'i386-unknown-elf-' PREFIX = '' ``` RTT 不支持linux-64bit, 强制使用gcc 32bit 版本, 编译RTT: `vim rtconfig.py` 把DEVICE 前缀注释掉, 把-m32 编译选项加上, 让gcc & ld 都使用-m32, 省事: ```python #DEVICE = ' -mtune=generic' DEVICE = ' -m32 ' ``` RT-Thread-5.0.2 版本错误: `error: unknown type name 'suseconds_t'` 添加linux-64bit 专属的解决方案(`__suseconds_t` 类型是long int, 在Linux 64bit和GCC4.6.1环境下, long int是64 bit的): ``` vim ./rt-thread-5.0.2/components/libc/compilers/common/include/sys/time.h #include
#define suseconds_t __suseconds_t ``` RT-Thread-5.0.2 版本错误: error: unknown type name 'useconds_t' ``` vim ./rt-thread-5.0.2/components/libc/compilers/common/include/sys/unistd.h #include
#define useconds_t __useconds_t ``` RT-Thread-5.0.2 版本错误: cstdlib.c:62:19: error: 'NULL' undeclared (first ``` use in this function) vim ./rt-thread-5.0.2/components/libc/compilers/common/cstdlib.c #include
``` 直接生成menuconfig, 配置之后产生.config, 才能正确编译出RTT(默认配置即可, 详细配置后续再搞, 最主要是生成.config) ``` cd ./rt-thread-5.0.2 cd ./bsp/x86 scons --menuconfig ``` 根据pc 平台, 编译出x86 的RTT `scons platform=linux-gcc` 编译过程中的致命问题(rt_hw_context_switch_interrupt() 函数发生冲突, 重定义): ``` # rt-thread-5.0.2/libcpu/ia32/cpuport.c:31:6: error: conflicting types for 'rt_hw_context_switch_interrupt' # rt-thread-5.0.2/include/rthw.h:145:6: note: previous declaration of 'rt_hw_context_switch_interrupt' was here ``` 这是RT-Thread-5.0.2 版本的源码问题, 换一个版本试试!! 如果你修改源码, 跳过去, 后续也可能会出问题, 功能出现问题, 详细看作者的RTT SDK 函数API定义; 强制跳过的方法(用): `vim ./rt-thread-5.0.2/libcpu/ia32/cpuport.c` 修改第145 行, 让这两个函数参数对齐( 主要报错原因是: 这两个重名函数的参数不统一? 应该是作者没有更新x86 版本的cpuport.c 导致的, 可以提醒一下) ``` //void rt_hw_context_switch_interrupt(rt_ubase_t from, rt_ubase_t to) void rt_hw_context_switch_interrupt(rt_ubase_t from, rt_ubase_t to, rt_thread_t from_thread, rt_thread_t to_thread) ``` 查看编译后的rtthread.bin 文件 `file rtthread.bin` 使用qume 启动rtthread.bin(拷贝可用的, 直接用, 省得麻烦, rtthread.bin 文件, 名都不用改, 直接用就行) ``` cp ../qemu-virt64-aarch64/qemu.sh . chmod 755 ./qemu.sh ./qemu.sh ``` 注意, x86 版本, 用我改造好的`./qemu.x86.sh` 启动please !! (改造过程, 可以自己模仿: `../qemu-virt64-aarch64/qemu.sh`) `./qemu.x86.sh` 2024/04/01 - adan_shaw@aliyun.com shanghai - china
查看更多
1
个回答
默认排序
按发布时间排序
adan_shaw
2024-04-01
这家伙很懒,什么也没写!
这个也是一个不错的x86 ubuntu/debian 平台的RT-Thread bsp 入门demo
撰写答案
登录
注册新账号
关注者
0
被浏览
536
关于作者
adan_shaw
这家伙很懒,什么也没写!
提问
1
回答
1
被采纳
0
关注TA
发私信
相关问题
1
studio的setting功能详细配置页有问题
2
master主支BSP\STM32\stm32f429-st-disco无法编译
3
论坛的模糊搜索真的是太差劲了
4
rt-thread 3.1.3 版本发现的3个bug的反馈
5
对ringbuffer中rt_ringbuffer_put_force函数的疑问
6
为什么pkgs --update没有任何反应,软件包也没有下载下来?
7
RT-Thread Studio使用Jlink调试后重新编译烧录发现部分文件没有被编译
8
使用alarm模块的时候,设置时间之后没有更新新的alarm时间
9
'rt_thread_delay_util' undeclared here
10
新年好!请问rt-thread官方的bug反馈途径就是这里吗
推荐文章
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
简单两步配置RTT源码阅读环境 vsc+clangd
2
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
3
LVGL使用字库IC芯片显示中文
4
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
5
freemodbus主机在freertos的适配,参考rtthread例程
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部