4. 简答题 假设一个C语言程序有两个源文件:main.c,test.c,它们的内容如下图所示。 Linux存储器映像如下: 针对程序的链接环节,请回答下面问题: (1)使用链接的好处是什么?链接的本质是什么? (2)test.c中那些符号是强符号?那些是弱符号? (3)对于编译生成的可重定位目标文件test.o,说明下表中的符号是否出现在test.o的符号表(.symtab节)中,如果是,定义该符号的模块是main.o还是test.o?该符号的类型是全局、外部,还是本地符号?该符号出现在相应定义模块的哪个节? (4)对照Linux存储器映像图,程序运行时,程序代码、数组a、变量count、val,i(假设变量均分配在内存区域)位于存储器那个区? 上一题 4/11 答题卡 下一题
时间: 2023-07-14 09:13:46 浏览: 407
【C语言程序设计】大学第一学期C语言程序设计模拟考试题答案.docx
(1) 链接的好处是可以将多个目标文件合并成一个可执行文件,并且解决了不同目标文件之间的符号引用问题。链接的本质是将目标文件中的符号和地址映射到最终可执行文件的内存地址中。
(2) test.c中的变量a、变量count、变量val和函数func都是强符号。
(3)
| 符号 | 是否出现在test.o的符号表中 | 定义该符号的模块 | 符号类型 | 符号出现的节 |
| --- | --- | --- | --- | --- |
| a | 是 | test.o | 全局 | .data |
| count | 是 | test.o | 全局 | .bss |
| val | 是 | test.o | 全局 | .data |
| func | 是 | test.o | 全局 | .text |
| i | 否 | - | - | - |
(4) 程序代码位于代码段(.text节)、变量a和变量val位于数据段(.data节)、变量count和变量i位于BSS段(.bss节)。
阅读全文