免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

RT- Thread新的命令行構(gòu)建系統(tǒng)

 amine 2010-07-07
對于大的工程來說,使用IDE來管理總是有諸多限制,例如大多少數(shù)IDE不能夠支持在工程中存在相同文件名的文件(即使是路徑不相同)。而且用IDE來做build,其速度確實要慢了好幾拍。

RT-Thread 0.2.x以前都是采用的GNU Make + GNU GCC的方式來編譯,但Makefile的組織太過復(fù)雜,特別是要做編譯選項,會非常非常麻煩(編譯選項不能夠在多個Makefile之間自由傳遞)。GNU還有一種方式,名為automake, autoconfig,不過當(dāng)自動產(chǎn)生的Makefile比自己的代碼還多的多的時,有時就不得不思考,程序員是在寫代碼,還是automake&autoconfig在寫程序員。

RT-Thread到0.3.x,主要的編譯器切換到RealView ARM Compiler,所以默認(rèn)沒有發(fā)布出帶Makefile的版本。當(dāng)然最大的原因還是,Makefile太難以忍受了!為了達(dá)到更好編譯的目的,嘗試創(chuàng)建了一個小型的分支,這個分支完全采用的是新的scons構(gòu)建系統(tǒng)http://www.):先有嘗試,然后考察其實用性,最后實施。

現(xiàn)在到了實施的階段:因為scons構(gòu)建系統(tǒng)優(yōu)點值得稱贊,值得應(yīng)用。scons的優(yōu)點,英文的,這里就不翻譯了:
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是構(gòu)建在python腳本的基礎(chǔ)上的,功能繁多。依賴于python,可以說在scons的腳本中能夠做非常多的事,控制靈活。試用下來,感覺最大的是,其-j選項。因為現(xiàn)在的機(jī)器多大是多核的,而-j后,將大大的加快編譯的速度,真正有那種在指尖飛的感覺。

進(jìn)入正題,說說RT-Thread里的命令行編譯如何使用
首先,需要安裝python,http://www.,2.5或2.6版本
其次,安裝scons,http://www.,可以先裝個安裝版本,以后自己會了只裝zip,源代碼版本即可。

再次,從google svn中獲取RT-Thread的最新代碼,因為最近才實施scons構(gòu)建系統(tǒng)。
因為每個人機(jī)器上的編譯器不同,安裝的目錄也不相同,需要根據(jù)你的環(huán)境設(shè)定編譯選項
打開RT-Thread代碼中bsp\stm3210\rtconfig.py文件,修改如下選項:
PLATFORM = 'gcc'
EXEC_PATH = 'd:/SourceryGCC/bin'

即把PLATFORM設(shè)置為你使用的編譯器,可設(shè)置為gcc或armcc (iar過一段時間支持)
EXEC_PATH設(shè)置為相應(yīng)編譯器的目錄(armcc的請設(shè)置到Keil的目錄)

修改完成后,請打開命令行窗口,先設(shè)置上scons的命令出處:(假設(shè)python安裝于C:根目錄下)
set PATH=c:\Python25\Scripts;%PATH%

進(jìn)入RT-Thread/STM3210的目錄(假設(shè)RT-Thread目錄放在h:根目錄下)
cd h:\bsp\stm3210
然后執(zhí)行
scons
-------------------------------------------------------------------------------------------------------------------------
有的時候真是感嘆scons的強(qiáng)大,強(qiáng)大到還不知道如何使用其內(nèi)部的特殊功能。例如,scons本身是攜帶分析代碼的功能的,最具意義的當(dāng)然是它分析 C/C++頭文件預(yù)處理的功能。通過這個預(yù)處理分析,能夠獲知哪些宏已經(jīng)定義了哪些宏未定義。推廣到RT-Thread之rtconfig.h,就能夠自動獲得RT-Thread的組件使能情況了,至于如何在構(gòu)建腳本中獲得,下回待續(xù)吧。。。

接上篇。有的時候,幾乎可以認(rèn)為編譯是最耗時的一項工作,特別是接觸到大型的工程以后,想象一下,當(dāng)一個系統(tǒng)從頭到尾需要編譯一個下午時,調(diào)試應(yīng)該如何進(jìn)行。scons提供了一個非常簡潔的選項,-j,就例如GNU Make中的-j一個意思,它能夠同時啟動多個編譯任務(wù),在多核芯片上也就能夠并行的同時編譯。只是,GNU Make通常不怎么管用,而scons的非常好用。

RT-Thread的構(gòu)建系統(tǒng)同樣也支持ARM RealView Compiler的,和前面相同,只需要修改下rtconfig.py文件,定義下CC和EXEC_PATH即可。不過用命令行的缺點也是*有的*,那就是下載調(diào)試并不如IDE中的方便,甚至可以說*沒辦法做到*。但辦法總是依靠人去想的:

1. 在Keil MDK中新建立一個空工程,設(shè)備當(dāng)然選擇你對應(yīng)的設(shè)備了,本例中的STM32F103ZE
2. 更改工程選項中,目標(biāo)文件為rtthread-stm32 (命令行版本默認(rèn)采用rtthread-stm32.axf/elf),并且生成的位置位于bsp\stm3210目錄下。
3. 根據(jù)使用的仿真器情況選擇工程的調(diào)試方式、燒寫方式
4. 燒寫 & 調(diào)試。這步只需要點擊Keil MDK的工具欄即可,??!千萬不要去點編譯??!

好了,一切就緒,可以直接調(diào)試代碼了。

小提示:
命令行版本生成的目標(biāo)文件后綴名可以在rtconfig.py中修改TARGET_EXT變量進(jìn)行更改。而當(dāng)使用GCC來進(jìn)行編譯時,也能夠使用axf做為后綴擴(kuò)展名。使用axf最大的好處是,能夠獲得Keil MDK燒寫&調(diào)試的支持。
 
----------------------------------------------------------------------------------------------------------------
 
樓主干得不錯,OS要有個好的開發(fā)環(huán)境,對RTT的普及大有好處啊,改天我也學(xué)學(xué)。
我也很煩keil工具不允許工程中有同名文件,甚至C和匯編文件之間都不能同名。
keil自作主張地把所有.o文件放在同一個目錄,且不能設(shè)置,是產(chǎn)生問題的根本原因。
 
----------------------------------------------------------------------------------------------------------------
建議樓主用cmake,比較簡單好用,自動生成makefile
比sons安裝起來簡單,在win下面有g(shù)ui配置界面
很多開源大項目都用cmake,功能上應(yīng)該不會比scons弱
 
---------------------------------------------------------------------------------------------------------------
cmake固然好,實際上使用scons,更看重它的python腳本功能。有了python腳本,能夠自定義非常非常多的功能,這個在以后應(yīng)該會有體現(xiàn),最重要的一點是根據(jù)rtconfig.h自動判斷哪些組件不需要,不應(yīng)該參加編譯。
 
RT-Thread是依賴于rtconfig.h來配置系統(tǒng)的,通過它來定義是否使用外圍的一些組件,內(nèi)核的參數(shù)等。

以往總是有一個頭大的事情,rtconfig.h修改了,還得想法更改Makefile的配置,讓它編譯或不編譯相應(yīng)的組件(當(dāng)然另外一種形式是,把各種組件制作成庫的形式)。所以在RT-Thread 0.2.4版本的時候,雖然依賴于python來生成配置文件(采用Makefile來組織),其配置文件不得不生成兩份,一個是rtconfig.h,給程序代碼使用;一個是config.mk,給Makefile使用。

而現(xiàn)在采用scons就方便多了,當(dāng)修改了rtconfig.h頭文件時,可以自動分析其中組件相關(guān)定義而決定是否編譯或不編譯組件。

在很早前就知道scons有這個功能的,只是今天晚上才把相應(yīng)腳本寫好。
 
- SConscript,項目工程文件,僅包括編譯的文件名、編譯時的參數(shù)
- SConstruct,工作空間文件(即它能夠包含一個或多個SConscript文件)

所以最終,所有和scons相關(guān)的都能夠通過UI來實現(xiàn),不再需要自行手動的添加。

一個項目要想活下去,割舍了一方面(例如設(shè)備上的一些東西基本都完全免費),那么另外一方面得爭取到一些,所以希望在其他方面,RT-Thread能夠養(yǎng)活自己。
 
 
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多