DSP编程技巧之14-揭开编译器神秘面纱之链接器的高级选项
时间:07-25 10:42 阅读:1015次
*温馨提示:点击图片可以放大观看高清大图
简介:在对编译器/链接器的各个选项的分析中,我们多次提到了“符号(symbol)”这个概念,而DSP调试的过程,往往也有个显著的特点,叫“符号调试”。每个可充定位目标模块都有一个符号表,它包含了模块中所定义和使用的符号的信息。在链接器的上下文中,有三种不同的符号:
在对编译器/链接器的各个选项的分析中,我们多次提到了“符号(symbol)”这个概念,而DSP调试的过程,往往也有个显著的特点,叫“符号调试”。每个可充定位目标模块都有一个符号表,它包含了模块中所定义和使用的符号的信息。在链接器的上下文中,有三种不同的符号:
1. 在目标模块中定义,并能被其它模块所引用的符号全局符号。全局链接器符号对应于非静态的C函数以及被定义为不带C static属性的全局变量。
2. 由其它模块所定义,并在当前目标模块中被引用的全局符号,这些符号被定义为外部符号(external),对应于定义为其它模块中的C函数和变量。例如我们在一个C文件中使用extern来声明某个在外部文件中定义的变量,这样就可以跨文件使用这个全局变量的值。
3. 只能被当前目标模块定义和使用的本地符号,它在当前模块中可见,但是在其它模块中无法被引用。在编译产生的目标文件中,对应于目标模块的段和相应的源文件的名字也能获得本地符号。
了解了符号的详细含义之后(这些内容多少和计算机系统有些关系,推荐看一下《深入理解计算机系统》或者类似的书籍,可以加深了解),我们便来看一下与符号有关的链接器选项,如表1所示。
表1 符号选项
表2 实时运行环境选项
表3 链接时优化选项
表4 其它杂项