Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
rt-smart
rt-smart编译器
RT-Thread Smart Ubuntu 20.04.4 编译环境的搭建
发布于 2022-06-10 22:10:23 浏览:1137
订阅该版
[tocm] ## 前言 - RT-Thread Smart (rt-smart)内核与用户APP分开编译,这点有点像嵌入式Linux的开发 - 折腾了一下,终于在 Ubuntu 20.04.4 上,搭建了基于 `ART-Pi-smart` 的编译环境 ## rt-smart - 目前好像在RT-Thread Studio上不能直接开发,当前支持的BSP数量不算丰富,ART-Pi-smart 开发板是基于ARM平台的,rt-smart建议使用:`arm-linux-musleabi-` 系列的gcc 交叉编译环境,后面研究是否可以直接使用`arm-none-linux-gnueabi-` 系列的标准ARM Linux gcc 交叉编译工具链编译,这样就不用下载那么多的编译工具了 ## 编译环境 - 在ubuntu 下的shell 控制台,下载 `ART-Pi-smart` 的代码,使用git 克隆的方式: `git clone https://gitee.com/rtthread/ART-Pi-smart.git` - 通过查看帮助文档,工具需要手动下载,并且在 `ART-Pi-smart/tools` 目录下,有一个编译工具下载的python 脚本,运行即可 ```bash cd tools python get_toolchain.py ``` - 默认会下载 arm的交叉工具链,通过查看脚本,可以下载多个平台的工具链,windows上也支持 ## 设置环境变量 - `ART-Pi-smart` 目录下,有个:`smart-env.sh `的脚本,我直接执行:`./smart-env.sh `,发现环境变量设置失败,也就是输入`arm-linux-` 按TAB键,无法自动补全找到:`arm-linux-musleabi-` - 解决方法:这里不用直接执行脚本,使用Linux 的`source` 命令,`source smart-env.sh` ```c /home/rtthread/smart/ART-Pi-smart# source smart-env.sh Arch => arm CC => gcc PREFIX => arm-linux-musleabi- EXEC_PATH => /home/rtthread/smart/ART-Pi-smart/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin ``` ## 验证编译环境 - 在shell 终端输入 `arm-linux-musleabi-gcc -v`,如果命令能执行成功,交叉编译环境就设置好了 ```c /home/rtthread/smart/ART-Pi-smart# arm-linux-musleabi-gcc -v Using built-in specs. COLLECT_GCC=arm-linux-musleabi-gcc COLLECT_LTO_WRAPPER=/home/rtthread/smart/ART-Pi-smart/tools/gnu_gcc/arm-linux-musleabi_for_x86_64-pc-linux-gnu/bin/../libexec/gcc/arm-linux-musleabi/7.3.0/lto-wrapper Target: arm-linux-musleabi Configured with: ../src_gcc/configure --disable-werror --prefix= --target=arm-linux-musleabi --with-sysroot=/arm-linux-musleabi --with-build-sysroot=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/sysroot/ --enable-languages=c,c++ --disable-multilib --enable-tls --disable-libmudflap --disable-libsanitizer --disable-gnu-indirect-function --disable-libmpx --enable-libstdcxx-time --host=x86_64-pc-linux-gnu AR_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/ar AS_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/gas/as-new LD_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/ld/ld-new NM_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/nm-new OBJCOPY_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/objcopy OBJDUMP_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/objdump RANLIB_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/ranlib READELF_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/readelf STRIP_FOR_TARGET=/builds/research/musl-toolchain/build/arm-linux-musleabi_for_x86_64-pc-linux-gnu/obj_binutils/binutils/strip-new Thread model: posix gcc version 7.3.0 (GCC) build date: Jun 4 2022 14:27:28 build sha: c62796d937808ba24e789256d8d25a5c6d2284fd build job: 340427 ``` ## 备注 - 这个export 导出的环境变量,实际上是临时的,可以改为【永久的】,当然只要这个 shell 控制台终端不退出,还是可以一直生效的。 ## 编译rt-smart kernel - 进入:`ART-Pi-smart/kernel/bsp/imx6ull-artpi-smart` 目录下: - `scons --clean` 清理一下工程 - `scons` 就可以编译 kernel了 ```c LINK rtthread.elf arm-linux-musleabi-objcopy -O binary rtthread.elf rtthread.bin arm-linux-musleabi-size rtthread.elf text data bss dec hex filename 1053508 34496 174016 1262020 1341c4 rtthread.elf python mkimage.py -t imximage -b rtthread.bin -o rtthread.imx -g rtthread.img -a 0x80001000 Image Type : Freescale i.MX Boot Image Bin File : rtthread.bin IMX File : rtthread.imx IMG File : rtthread.img Image Size : 1095360 bytes Image Load : 0x80001000 scons: done building targets. ``` ## 编译用户程序 - kernel 与用户程序分开了,所以进入用户的目录:`ART-Pi-smart/userapps`,与编译kernel的命令类似: - `scons --clean` 清理一下工程 - `scons` 就可以编译 了 ```c LINK root/bin/cpp1114.elf LINK root/bin/gpio.elf LINK root/bin/hello.elf LINK root/bin/i2c.elf LINK root/bin/ntp.elf LINK root/bin/ping.elf LINK root/bin/pong.elf LINK root/bin/pwm.elf LINK root/bin/sysinfo.elf LINK root/bin/uPnP.elf LINK root/bin/uart.elf LINK root/bin/vi.elf LINK root/bin/webclient.elf CC services/webserver/packages/webnet-v2.0.2/src/webnet.o CC services/webserver/packages/webnet-v2.0.2/src/wn_mimetype.o CC services/webserver/packages/webnet-v2.0.2/src/wn_request.o CC services/webserver/packages/webnet-v2.0.2/src/wn_session.o CC services/webserver/packages/webnet-v2.0.2/src/wn_utils.o CC services/webserver/packages/webnet-v2.0.2/src/wn_module.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_asp.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_auth.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_cgi.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_index.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_alias.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_upload.o CC services/webserver/packages/webnet-v2.0.2/module/wn_module_ssi.o CC services/webserver/packages/webnet-v2.0.2/samples/wn_sample.o CC services/webserver/packages/webnet-v2.0.2/samples/wn_sample_upload.o LINK root/bin/webserver.elf scons: done building targets. ``` - 用户程序,最终的产物就是 elf 文件 ## 小结 - 初步了解 RT-Thread Smart的编译环境的搭建 - 基于ubuntu 20.04.4 ,编译 倒是挺容易的,不过代码阅读、编辑,还是需要IDE,如VS Code,后面研究在VS Code 上搭建开发 rt-smart的环境
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
张世争
学以致用
文章
131
回答
805
被采纳
174
关注TA
发私信
相关文章
1
rt-smart发布时间
2
rt-smart qemu-vexpress-a9 编译报错
3
rt-smart分支编译rasp4-32bsp报错
4
rt-smart qemu-vexpress-a9 win10编译脚本问题
5
rt-smart qemu-vexpress-a9 linux 下crtl+c
6
rt-smart + pthread 编译报错
7
rt-smart的rt_channel实现问题
8
关于rt-smart的musl-libc
9
RT-Smart Windows 编译 qemu-vexpress-a9 出错
10
用户程序在RT-Smart存在的方式
推荐文章
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组件
热门标签
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
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
a1012112796
20
个答案
3
次被采纳
张世争
12
个答案
3
次被采纳
踩姑娘的小蘑菇
7
个答案
3
次被采纳
用户名由3_15位
14
个答案
2
次被采纳
rv666
9
个答案
2
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
RTT_逍遥
1
篇文章
8
次点赞
大龄码农
1
篇文章
5
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部