Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RT-Thread新的命令行构建系统
发布于 2009-10-22 17:42:45 浏览:6032
订阅该版
对于大的工程来说,使用IDE来管理总是有诸多限制,例如大多少数IDE不能够支持在工程中存在相同文件名的文件(即使是路径不相同)。而且用IDE来做build,其速度确实要慢了好几拍。 RT-Thread 0.2.x以前都是采用的GNU Make + GNU GCC的方式来编译,但Makefile的组织太过复杂,特别是要做编译选项,会非常非常麻烦(编译选项不能够在多个Makefile之间自由传递)。GNU还有一种方式,名为automake, autoconfig,不过当自动产生的Makefile比自己的代码还多的多的时,有时就不得不思考,程序员是在写代码,还是automake&autoconfig在写程序员。 RT-Thread到0.3.x,主要的编译器切换到RealView ARM Compiler,所以默认没有发布出带Makefile的版本。当然最大的原因还是,Makefile太难以忍受了!为了达到更好编译的目的,尝试创建了一个小型的分支,这个分支完全采用的是新的scons构建系统(http://www.scons.org):先有尝试,然后考察其实用性,最后实施。 现在到了实施的阶段:因为scons构建系统优点值得称赞,值得应用。scons的优点,英文的,这里就不翻译了: What makes SCons better? * Configuration files are Python scripts--use the power of a real programming language to solve build problems. * Reliable, automatic dependency analysis built-in for C, C++ and Fortran--no more "make depend" or "make clean" to get all of the dependencies. Dependency analysis is easily extensible through user-defined dependency Scanners for other languages or file types. * Built-in support for C, C++, D, Java, Fortran, Yacc, Lex, Qt and SWIG, and building TeX and LaTeX documents. Easily extensible through user-defined Builders for other languages or file types. * Building from central repositories of source code and/or pre-built targets. * Built-in support for fetching source files from SCCS, RCS, CVS, BitKeeper and Perforce. * Built-in support for Microsoft Visual Studio .NET and past Visual Studio versions, including generation of .dsp, .dsw, .sln and .vcproj files. * Reliable detection of build changes using MD5 signatures; optional, configurable support for traditional timestamps. * Improved support for parallel builds--like make -j but keeps N jobs running simultaneously regardless of directory hierarchy. * Integrated Autoconf-like support for finding #include files, libraries, functions and typedefs. * Global view of all dependencies--no more multiple build passes or reordering targets to build everything. * Ability to share built files in a cache to speed up multiple builds--like ccache but for any type of target file, not just C/C++ compilation. * Designed from the ground up for cross-platform builds, and known to work on Linux, other POSIX systems (including AIX, *BSD systems, HP/UX, IRIX and Solaris), Windows NT, Mac OS X, and OS/2. 如上所说的,scons是构建在python脚本的基础上的,功能繁多。依赖于python,可以说在scons的脚本中能够做非常多的事,控制灵活。试用下来,感觉最大的是,其-j选项。因为现在的机器多大是多核的,而-j后,将大大的加快编译的速度,真正有那种在指尖飞的感觉。 进入正题,说说RT-Thread里的命令行编译如何使用 首先,需要安装python,http://www.python.org,2.5或2.6版本 其次,安装scons,http://www.scons.org,可以先装个安装版本,以后自己会了只装zip,源代码版本即可。 再次,从google svn中获取RT-Thread的最新代码,因为最近才实施scons构建系统。 因为每个人机器上的编译器不同,安装的目录也不相同,需要根据你的环境设定编译选项 打开RT-Thread代码中bsp\stm3210 tconfig.py文件,修改如下选项: PLATFORM = 'gcc' EXEC_PATH = 'd:/SourceryGCC/bin' 即把PLATFORM设置为你使用的编译器,可设置为gcc或armcc (iar过一段时间支持) EXEC_PATH设置为相应编译器的目录(armcc的请设置到Keil的目录) 修改完成后,请打开命令行窗口,先设置上scons的命令出处:(假设python安装于C:根目录下) set PATH=c:\Python25\Scripts;%PATH% 进入RT-Thread/STM3210的目录(假设RT-Thread目录放在h:根目录下) cd h:\bsp\stm3210 然后执行 scons
查看更多
7
个回答
默认排序
按发布时间排序
bernard
2009-10-23
这家伙很懒,什么也没写!
呵呵,未完继续 ---- 有的时候真是感叹scons的强大,强大到还不知道如何使用其内部的特殊功能。例如,scons本身是携带分析代码的功能的,最具意义的当然是它分析C/C++头文件预处理的功能。通过这个预处理分析,能够获知哪些宏已经定义了哪些宏未定义。推广到RT-Thread之rtconfig.h,就能够自动获得RT-Thread的组件使能情况了,至于如何在构建脚本中获得,下回待续吧。。。 接上篇。有的时候,几乎可以认为编译是最耗时的一项工作,特别是接触到大型的工程以后,想象一下,当一个系统从头到尾需要编译一个下午时,调试应该如何进行。scons提供了一个非常简洁的选项,-j,就例如GNU Make中的-j一个意思,它能够同时启动多个编译任务,在多核芯片上也就能够并行的同时编译。只是,GNU Make通常不怎么管用,而scons的非常好用。 RT-Thread的构建系统同样也支持ARM RealView Compiler的,和前面相同,只需要修改下rtconfig.py文件,定义下CC和EXEC_PATH即可。不过用命令行的缺点也是*有的*,那就是下载调试并不如IDE中的方便,甚至可以说*没办法做到*。但办法总是依靠人去想的: 1. 在Keil MDK中新建立一个空工程,设备当然选择你对应的设备了,本例中的STM32F103ZE 2. 更改工程选项中,目标文件为rtthread-stm32 (命令行版本默认采用rtthread-stm32.axf/elf),并且生成的位置位于bsp\stm3210目录下。 3. 根据使用的仿真器情况选择工程的调试方式、烧写方式 4. 烧写 & 调试。这步只需要点击Keil MDK的工具栏即可,!!千万不要去点编译!! 好了,一切就绪,可以直接调试代码了。 小提示: 命令行版本生成的目标文件后缀名可以在rtconfig.py中修改TARGET_EXT变量进行更改。而当使用GCC来进行编译时,也能够使用axf做为后缀扩展名。使用axf最大的好处是,能够获得Keil MDK烧写&调试的支持。
panxiaoku
2009-10-23
这家伙很懒,什么也没写!
为了使用它,我得不得不去装 一个别的庞大的东西的时候,大多数时候我不太想去弄。呵呵,个人想法。可能我接触的工程没 有太宏大的原因吧。。。。。
bernard
2009-10-23
这家伙很懒,什么也没写!
>为了使用它,我得不得不去装 一个别的庞大的东西的时候,大多数时候我不太想去弄。呵呵,个人想法。可能我接触的工程没 有太宏大的原因吧。。。。。 --- 是的,这个也是我所担心的,所以我也在想办法把这个进入成本降低。过一段时间应该会有改观的,trust me! 另外,小声的说一句:python + scons 其实并不大,可以归类于小工具。
aozima
2009-10-23
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
>为了使用它,我得不得不去装 一个别的庞大的东西的时候,大多数时候我不太想去弄。呵呵,个人想法。可能我接触的工程没 有太宏大的原因吧。。。。。 --- 当初我也这样觉得 现在,我依然这样觉得
bernard
2009-10-23
这家伙很懒,什么也没写!
嗯,和aozimo交流后,更正一下: 这个新的命令行接口**并不意味着RT-Thread就强迫用户**只能使用命令行接口,原来的Keil MDK工程,IAR工程还会继续提供下去,只是对使用工程文件的额外选择。 主要是因为原来采用GNU Make太别扭了,所以有了这套新的方案。然后,一些分支可能只能使用gcc (例如avr32),而这个就相当于提供了一套模板,能够让移植者把精力放在代码移植上,而不是编写Makefile上。
panxiaoku
2009-10-23
这家伙很懒,什么也没写!
强力支持。。。提供的方案越多,用户能选择的越多,灵活性越高。。。
撰写答案
登录
注册新账号
关注者
0
被浏览
6k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5940
被采纳
76
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
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
【24嵌入式设计大赛】基于RT-Thread星火一号的智慧家居系统
2
RT-Thread EtherKit开源以太网硬件正式发布
3
如何在master上的BSP中添加配置yml文件
4
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
5
RT-Thread 发布 EtherKit开源以太网硬件!
热门标签
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
keil_MDK
rt_mq_消息队列_msg_queue
MicroPython
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
19
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
6
个答案
2
次被采纳
用户名由3_15位
13
个答案
1
次被采纳
本月文章贡献
程序员阿伟
9
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
5
次点赞
RTT_逍遥
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部