打印
[ARM入门]

程序编译和链接

[复制链接]
670|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
千岁寒|  楼主 | 2018-9-18 19:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序编译过程
  • 预编译:执行宏扩散,文件包含,条件编译和注释处理等动作,为编译做准备
  • 编译:将源码编译为机器目标代码,文件以.o结尾,目标代码中包含了程序最初的二进制程序,只是还没有被链接起来
  • 链接:将目标代码按照-Ttext或者lds链接成可执行的二进制程序整体,链接时按照链接脚本指定的规则来进行
  • (可选)strip:删除二进制可执行程序中的符号表,也就是函数表,以减少程序体积,符号表可以在程序反编译的时候提供程序的函数信息,但是在实际运行中符号表是没有用的
  • (可选)objcopy:将二进制可执行程序转换为可下载烧写的bin文件,以便烧写到NAND Flash或者其他介质中

应用程序必须经过编译、汇编和链接后才变成可执行文件,在链接时,要对所有的目标文件进行重定位( relocation) ,建立符号引用规则,同时为变量、函数等分配运行地址。当程序执行时,系统必须把代码加载到链接时所指定的地址空间,以保证程序在执行过程中对变量、函数等符号的正确引用,使程序正常运行。在具有操作系统的系统中,重定位过程由操作系统自动完成

评论
千岁寒 2018-9-18 20:01 回复TA
链接过程中,位置无关代码和位置相关代码 如何区别对待!? 

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

72

主题

244

帖子

4

粉丝