GCC编译器原理(二)------编译原理一:目标文件

发布者:huanran最新更新时间:2024-08-22 来源: cnblogs关键字:GCC编译器  编译原理  目标文件 手机看文章 扫描二维码
随时随地手机看文章

 62        00000000000000f4  0000000000000000   A       0     0     8

 63   [19] .init_array       INIT_ARRAY       0000000000600e10  00000e10

 64        0000000000000008  0000000000000000  WA       0     0     8

 65   [20] .fini_array       FINI_ARRAY       0000000000600e18  00000e18

 66        0000000000000008  0000000000000000  WA       0     0     8

 67   [21] .jcr              PROGBITS         0000000000600e20  00000e20

 68        0000000000000008  0000000000000000  WA       0     0     8

 69   [22] .dynamic          DYNAMIC          0000000000600e28  00000e28

 70        00000000000001d0  0000000000000010  WA       6     0     8

 71   [23] .got              PROGBITS         0000000000600ff8  00000ff8

 72        0000000000000008  0000000000000008  WA       0     0     8

 73   [24] .got.plt          PROGBITS         0000000000601000  00001000

 74        0000000000000028  0000000000000008  WA       0     0     8

 75   [25] .data             PROGBITS         0000000000601028  00001028

 76        0000000000000010  0000000000000000  WA       0     0     8

 77   [26] .bss              NOBITS           0000000000601038  00001038

 78        0000000000000008  0000000000000000  WA       0     0     1

 79   [27] .comment          PROGBITS         0000000000000000  00001038

 80        0000000000000035  0000000000000001  MS       0     0     1

 81   [28] .shstrtab         STRTAB           0000000000000000  000018cc

 82        000000000000010c  0000000000000000           0     0     1

 83   [29] .symtab           SYMTAB           0000000000000000  00001070

 84        0000000000000648  0000000000000018          30    47     8

 85   [30] .strtab           STRTAB           0000000000000000  000016b8

 86        0000000000000214  0000000000000000           0     0     1

 87 Key to Flags:

 88   W (write), A (alloc), X (execute), M (merge), S (strings), l (large)

 89   I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)

 90   O (extra OS processing required) o (OS specific), p (processor specific)

 91 

 92 There are no section groups in this file.

 93 

 94 Program Headers:

 95   Type           Offset             VirtAddr           PhysAddr

 96                  FileSiz            MemSiz              Flags  Align

 97   PHDR           0x0000000000000040 0x0000000000400040 0x0000000000400040

 98                  0x00000000000001f8 0x00000000000001f8  R E    8

 99   INTERP         0x0000000000000238 0x0000000000400238 0x0000000000400238

100                  0x000000000000001c 0x000000000000001c  R      1

101       [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

102   LOAD           0x0000000000000000 0x0000000000400000 0x0000000000400000

103                  0x000000000000070c 0x000000000000070c  R E    200000

104   LOAD           0x0000000000000e10 0x0000000000600e10 0x0000000000600e10

105                  0x0000000000000228 0x0000000000000230  RW     200000

106   DYNAMIC        0x0000000000000e28 0x0000000000600e28 0x0000000000600e28

107                  0x00000000000001d0 0x00000000000001d0  RW     8

108   NOTE           0x0000000000000254 0x0000000000400254 0x0000000000400254

109                  0x0000000000000044 0x0000000000000044  R      4

110   GNU_EH_FRAME   0x00000000000005e4 0x00000000004005e4 0x00000000004005e4

111                  0x0000000000000034 0x0000000000000034  R      4

112   GNU_STACK      0x0000000000000000 0x0000000000000000 0x0000000000000000

113                  0x0000000000000000 0x0000000000000000  RW     10

114   GNU_RELRO      0x0000000000000e10 0x0000000000600e10 0x0000000000600e10

115                  0x00000000000001f0 0x00000000000001f0  R      1

116 

117  Section to Segment mapping:

118   Segment Sections...

119    00     

120    01     .interp 

121    02     .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame 

122    03     .init_array .fini_array .jcr .dynamic .got .got.plt .data .bss 

123    04     .dynamic 

124    05     .note.ABI-tag .note.gnu.build-id 

125    06     .eh_frame_hdr 

126    07     

127    08     .init_array .fini_array .jcr .dynamic .got 

128 

129 Dynamic section at offset 0xe28 contains 24 entries:

130   Tag        Type                         Name/Value

131  0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]

132  0x000000000000000c (INIT)               0x4003c8

133  0x000000000000000d (FINI)               0x4005c4

134  0x0000000000000019 (INIT_ARRAY)         0x600e10

135  0x000000000000001b (INIT_ARRAYSZ)       8 (bytes)

136  0x000000000000001a (FINI_ARRAY)         0x600e18

137  0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)

138  0x000000006ffffef5 (GNU_HASH)           0x400298

139  0x0000000000000005 (STRTAB)             0x400318

140  0x0000000000000006 (SYMTAB)             0x4002b8

141  0x000000000000000a (STRSZ)              61 (bytes)

142  0x000000000000000b (SYMENT)             24 (bytes)

143  0x0000000000000015 (DEBUG)              0x0

144  0x0000000000000003 (PLTGOT)             0x601000

145  0x0000000000000002 (PLTRELSZ)           48 (bytes)

146  0x0000000000000014 (PLTREL)             RELA

147  0x0000000000000017 (JMPREL)             0x400398

148  0x0000000000000007 (RELA)               0x400380

149  0x0000000000000008 (RELASZ)             24 (bytes)

150  0x0000000000000009 (RELAENT)            24 (bytes)

151  0x000000006ffffffe (VERNEED)            0x400360

152  0x000000006fffffff (VERNEEDNUM)         1

153  0x000000006ffffff0 (VERSYM)             0x400356

154  0x0000000000000000 (NULL)               0x0

[1] [2] [3] [4] [5] [6]
关键字:GCC编译器  编译原理  目标文件 引用地址:GCC编译器原理(二)------编译原理一:目标文件

上一篇:GCC编译器原理(二)------编译原理一:ELF文件(1)
下一篇:GCC编译器原理(一)05------GCC 工具:readelf、size、strings、strip和 windres

推荐阅读最新更新时间:2024-11-05 01:50

arm-linux-gcc常用参数讲解 gcc编译器使用方法
我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为 arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。 在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段: 1. 预处理(Pre-Processing) 2. 编译(Compiling) 3. 汇编(Assembling) 4. 链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为 今后的调试做好准备。和其它常用的编译器一样,GCC也提供了
[单片机]
Keil5.15使用GCC编译器链接.a库文件
我们知道,当使用第三方的代码时,人家有可能会扔个Lib文件给你.这时候,别人只要提供header文件给你,则你就可以通过Lib文件及header的函数声明,对Lib中的函数进行调用.在Keil中如果使用ARMCC调用Lib文件,相信大家都能从网上找到方法.那如果在Keil中使用GCC来链接第三方GCC编译好的Lib文件—— .a 应该如何呢? 在告诉大家方法之前,我们写个简单的函数,然后用GCC编译器编译产生.a文件,便于我们进行测试. 首先,在Keil中配置gcc编译环境,这个可以参考我的文章. Keil5.15使用GCC编译器编译STM32工程,里面有交大家配置方法. 接下来,将工程配置成生成库方式.这个跟Keil ARMCC
[单片机]
Keil5.15使用<font color='red'>GCC编译器</font>链接.a库<font color='red'>文件</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved