Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1053994
  • 博文数量: 178
  • 博客积分: 10222
  • 博客等级: 上将
  • 技术积分: 2215
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-03 11:27
个人简介

有所追求

文章分类

全部博文(178)

文章存档

2012年(1)

2011年(5)

2010年(3)

2009年(78)

2008年(91)

我的朋友

分类:

2009-05-16 21:44:47

这是从网络上摘抄的一片在 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) |
给主人留下些什么吧!~~

chinaunix网友2009-09-22 17:27:47

这篇文章是你原创吗?看起来不像。 如果是的话,能否发一份SE配置keil的配置给我,谢谢! deungxu0740@sina.com

chinaunix网友2009-05-17 00:42:42

还是比较喜欢sourceInsight。 跳转和查看引用,比较方便。