摘要:
开发环境: 工具集: 这些工具集是为了配合GCC编译器进行高效开发而设计的。 实验: test.c: func.c: g_pointer默认为空指针。 使用addr2line定位错误: 开启core dump选项就是为了记录程序崩溃的最后一刻程序的状态和寄存器的状态。 成功定位到了出错的地方。 剔除 阅读全文
posted @ 2018-10-21 22:24
周伯通789
阅读(306)
评论(0)
推荐(0)
摘要:
本节进行一个综合实验: write函数也属于libc库,write不是系统调用,只是系统调用的一个封装。 打印函数直接使用sys_write这个系统调用。系统调用编号为4。 退出函数直接使用sys_exit这个系统调用。系统调用编号为1。 链接脚本: 代码段的起始地址在0x08048000的基础上加 阅读全文
posted @ 2018-10-21 21:36
周伯通789
阅读(213)
评论(0)
推荐(0)
摘要:
思考: 链接器根据什么原则完成具体的链接工作? 入口函数是可配置的?那么其他的原则是不是也可以配置呢? 假设是可以配置的,那么必然的存在一个配置文件,在这个文件中可以配置各种各样的原则。这个配置文件就是链接脚本。 链接脚本里面就写了链接原则(如何链接各个段,如何重定位)。 上图指定了代码段的起始地址 阅读全文
posted @ 2018-10-21 20:21
周伯通789
阅读(254)
评论(0)
推荐(0)
摘要:
链接器在合并各个目标文件中的段时需要将标识符的最终地址给确定了。这就是重定位的过程(确定各个段的最终起始地址以及各个标识符的地址)。 示例: test.c如下: func.c如下: 编译func.c,并查看符号信息: 可以看到func这个标识符相对于代码段的偏移位置为0。 g_pointer前面有一 阅读全文
posted @ 2018-10-21 19:07
周伯通789
阅读(283)
评论(0)
推荐(0)
浙公网安备 33010602011771号