GCC编译四步及LDS脚本
发布时间
阅读量:
阅读量
GCC编译四步流程
1、预处理:涉及宏定义替换等相关操作
2、编译非汇编:源代码需经历词法分析、语法分析以及语义分析等阶段,最终生成对应的汇编代码
3、汇编:将汇编语言代码转换为具体的二进制机器码。需要注意的是,在此阶段尚未进行链接操作,因此生成的二进制代码虽为机器可识别格式,但仍然无法直接执行
4、链接:将目标文件中所引用的其他目标二进制文件进行整合,形成最终的可执行二进制文件
此处提及“整合”一词,是因为存在两种不同的链接方式
动态链接: 最终生成的可执行二进制文件仅包含所需目标二进制文件的位置信息,并未实际嵌入这些文件内容。因此,生成的二进制文件体积较小,便于后续对目标库进行更新操作。只要接口和位置未发生变化,则无需重新编译即可使用更新后的版本。然而,这种形式下生成的程序本身无法独立运行
静态链接: 将所需的外部目标二进制文件直接嵌入到自身二进制文件中,实现位置上的替代。这种方式生成的程序可以独立运行,但其体积相对较大。每当相关的目标库发生更新时,若希望使用新功能,则必须重新进行整个编译过程。
text段、data段和bss段
