这是从网络上摘抄的一片在 SLICKEDIT 中使用 compiler/Linker 的文章的主要部分。
SlickEdit把针对一钟编译器的配置叫做Package,一个非标准的术语。它自带VC++/Java/Borland C++的多个版本的配置,
还有Verilog/VHDL,以及一些不常见的语言的编译器配置,但没有ARM/KeilC/DSP等嵌入式处理器的编译配置,不过由于这些编译器跟
标准C/C++编译器差别不是很大,可以仿照一个建立自己的配置。最简单的办法是把别人建好的配置拿来用就是了,可以跳过本节^_^。自已建的方法:
1.File/New...选Project,下面列出一堆Project类型,是不是很多眼熟的?SlickEdit的确是想一网打尽啊。漏网的不要紧,下面还有
个"Customize..."按钮。
2.点"Customize..."按钮打开"Customized Packages"页面,可以对已有的Package进行修改,也可以新建一个。我们要新建,点New...
3.我们先搞定ARM的,名字取个"RVCT 2.2",copy Setting from 选Generic C/C++,即标准C/C++,不要选下面的GNU C/C++ Wizard,这个
对混合了汇编代码的Project支持得不好。(ARM系统谁不用个汇编的Starup/boot?)
4.点确认进入Project Package for "RVCT 2.2"页面:
a)Seting for下拉框里有Debug/Release/All Configuration三项,表明可以设置两个版本的编译参数。一般在ARM项目中,Debug作为用仿
真器加载到RAM中运行的配置,Release为烧写到Flash中运行的版本,配置自然不一样。
技巧:实际使用中发现改个参数进页面设置比较麻烦,恰好RVCT可以用via文件保存过长的编译链接选项,用scatter文件保存存贮分配,因
此我们可以将有区别的选项放到via和scatter文件里,然后用点小技巧,将Debug和Realse里的设置设成一样的。
b)Directories:空着就行了。要设的一般也只需要设Include目录,但RVCT 2.2和Keil C8.x的编译器都知道自己的inc目录在哪,就不用设
了。如果有用户自定义的库,把相应的include目录加进来就行,也可以加在via文件里。
Bug: SlickEdit有个搞笑的Bug,添加目录的地方有一行"",有时会出现多行这样的提示,以
前老版本的还删不掉,现在2007版改进了些好,你把它关了重打开就消失了。
c)Tools:这里是设置的重点!
设置举例:点Compiler,默认Debug/Release的参数设置是不一样,所以提示Select a Configuration to View the command,先选一个就
是了,如Debug。
将以下一行替换掉Command Line的内容:
%(RVCT22BIN)\armcc.exe -c %i -o "%bd%n.o" "%f" --via via\cc_%b.via
其含义后面再一起介绍。
再选Release,复制同样的命令。
以上设置的是C/C++编译器,在Compiler下面有个"*.s"的子项,用来编译汇编代码的(汇编代码的扩展名在这里只能用*.s了,包括后面的
Keil C的设置)。命令行用:
%(RVCT22BIN)\armasm.exe -c -o "%bd%n.o" "%f" --via via\asm.via
Link的命令行用:
%(RVCT22BIN)\armlink.exe -o %RN_%b.axf %f %libs --via via\link_%b.via
Build和Rebuil不用改动,里面用的vsbuild是SlickEdit的程序,相当于其它编译器中的make,但make文件是自动维护的。Build的功能
是检测哪个源程序有改动,将其以及引用(include)了它的代码重新编译,然后调用link生成目标文件。Rebuil是将项目中的所有代码重新
编译一遍,然后link成目标代码。(这个功能比ARM套件里自带的CodeWarror强,经常修改了.h文件但build时没把所有引用了这个.h的代码重新编译)
Debug/excute在这里没啥用,不过可以设置成调用仿真软件。比如用AXD的时候设成
<路径>\axd.exe %f (好是这样的,后来换成Rvdeug,命令行太复杂,就没用这个功能了)
d)Build页面:
Build System选Without a make file(dependencies automaticly checked)
Post Build Command也很有用,因为经常要把编译完后要把axf文件转成bin用于烧写,Keil里也要把目标文件转成hex
可以只设Release版,axf转bin的命令为:
%(RVCT22BIN)\fromelf.exe --bin --output %RN_%b.bin %RN_%b.axf
后面三个页面暂时可以不用管,这里只提一下
e) Compiler/Link页面:
Compiler将在目标2中介绍如何设置,对编译没有影响,对编写代码有帮助。
Define: 暂时无视它,要用也在via file里设就行了
Libraies/Object: 编译器自带的库不用加进来,编译器自己会找。可以把自己做的库放在这或者放在via文件里。如何做库后文介绍。
f)Dependency:后文专门介绍
g)Open页面:讲Keil时介绍
解释:SlickEdit在很多地方可以使用变量,都是以%打头,其中用%()括起来的是Windows系统的环境变量,比如RVCT22BIN是ARM RealView安装时建的环境变量,指示了编译器的安装目录。其它以%打头的变量是SlickEdit项目相关的变量。在Command Line编译框的右边有个右三角的按钮,点击会列出一堆变量的定义。比如%i是在Directories页面设置的Inculde目录,%b是当前配置的名称Debug或Release,%bd是在当前项目目录建的"Debug\"或"Release\"目录,%n指文件名如编译main.c代表的"main"等等。
via/scatter文件的使用技术。在上面的例子里我用到了5个via文件和两个scatter文件
via文件放在via子目录:
via\asm.via
via\cc_debug.via
via\cc_release.via
via\link_debug.via
via\link_realese.via
看名知义,在命令行中用%d使得debug/release版的命令行相同,命令行只含输入输出文件以及必要的参数,其它编译/链接选项都放到via文件里。
scatter文件放在Scatter子目录:
Scatter\debug.sct
Scatter\release.sct
术语:Pagckage这个语似乎SlickEdit的员工对它也不满意,本意是:"Package" is the terminology used to describe a type of
project. 对于"Customize packages" 更好的说法应该是"Customize project types".
<待续>
阅读(5522) | 评论(2) | 转发(0) |