.data和.text段合并

a.c

#include <stdio.h>  
extern int share;
int main(void)  
{  
int a=100;
swap(&a,&share);
}  


b.c

int share=1;
void swap(int *a,int *b)
{
*a^=*b^=*a^=*b;
}


编译

#gcc -c a.c b.c

 

链接

#ld a.o b.o -e main -o ab

 

查看

#objdump -h  文件

VMA即虚拟地址

size即大小

file off即偏移量

 

.text段被分配到地址0x08048094 大小0x62字节

.data段被分配到地址0x080490f8 大小0x4字节

0x27+0x3A=0x61

0+4=4

 

size查看大小

 

参考《程序员的自我修养—链接、装载与库》--第四章 静态链接

你可能感兴趣的:(.data和.text段合并)