DSP编程技巧之11-揭开编译器神秘面纱之文件、目录与扩展名
时间:06-20 15:58 阅读:960次
*温馨提示:点击图片可以放大观看高清大图
简介:前面讲了很多次和优化、汇编这些相关的选项,如果以前接触这些概念少的话,难免是云里雾里迷惑半天,需要多多练习、尝试才能加深理解。所以这次换一些容易理解的,包括文件类型、目录结构、扩展名等。
前面讲了很多次和优化、汇编这些相关的选项,如果以前接触这些概念少的话,难免是云里雾里迷惑半天,需要多多练习、尝试才能加深理解。所以这次换一些容易理解的,包括文件类型、目录结构、扩展名等。这些概念并不新鲜,因为它们组成了操作系统里面最基本的文件管理功能。在一个工程中包含的文件较少的时候,这些元素在编程环境例如CCS3.3里的管理并不复杂,大不了把所有要用到的文件都拷到同一个目录下然后添加进工程就行了。但是在更复杂的工程和更高级版本的编程环境里,例如在CCS5.x甚至刚刚推出的CCS6.x里,工程的管理看起来要复杂的多(也是为了更加有条理地管理文件和目录结构),有的文件是我们自己编写的,有的头文件/源程序/库文件引用了TI官方出版的外设与头文件示例,有的文件是从我们或者别人以前写好的程序里引用过来的,不同的文件夹、外设类型揉杂在一起,有时候即使你反复确认了每个文件、每个路径结构都对了,可是编译的时候它就是通不过了。甚至别人全部编译通过的工程,你原封不动地复制过来,它突然就是死活编译不了;例如,Hex2000.exe是CCS编译器自带的,把C2000的工程输出文件.out转换为Flash烧写文件.hex的,通常它位于CCS安装目录下面的 ools\compiler\c2000_6.2.0\bin里面。但是如果别人的工程把它放在了一个很复杂的文件目录下,例如C:\Users\xxx\Desktop\PiccoloBoot\Debug>..\...\...\...\...\...\PiccoloFW\Hex2000.exe,你拷过来,导入Workspace再运行的时候。。。所以对这些选项还是要仔细看一看的。
表1中的选项可以让我们让强制把某些文件解读为特定类型的文件。这个说起来可能感觉很奇怪,什么文件就用什么扩展名呗,为什么需要这么做。事实上笔者确实遇到过这样的情况,在一个老外给的例子里,用头文件、C和C++和汇编文件一起来读程序的时候,经常读着读着程序就在某处中断了,找不到任何跳转信息。后来才发现,很多C函数写到了其它类型的文件里面了,例如某些不知道是不是他自定义的.s文件里;默认情况下编辑器和编译器是不认识这种文件类型的,所以根本就没有把它们作为源程序添加到工程里面。
举例说明,我们有个后缀名为.s的文件,里面是C程序,这时我们就可以使用下面的选项让编译器自动把它读取为C程序了:cl2000 –v28 –c_file=file.s
举例说明,我们有个名为fit.rrr的文件,里面是汇编语言程序,这时我们就可以使用下面的选项让编译器读取它,并编译输出相关的目标文件.o(而不是默认的obj):
cl2000 –v28 –asm_extension=.rrr –obj_extension=.o fit.rrr