作者: Sam (甄峰)

Sam在程序开发中,经常要用到多层库嵌套。 Sam常在想,一些底层库的符号(symbols),在上层库乃至应用程序中并非全部要使用到。如果这些符号(symbols)实现一层层报喊道上一层库中,并最终添加到应用程序中,这不是既增大了应用程序大小,也造成运行速度的降低?

记得GCC编译选项中有解决这个问题的方法。于是查找之。

0. 总体思想:

网络上有人建议如下设置:

1. 编译阶段使用:

-ffunction-sections

-fdata-sections

2. 链接阶段使用:

-Wl,--gc-sections

在GCC,LD官方文档中如下讲解:

-ffunction-sections

-fdata-sections

Place each function or data item into its own section in the output file if the target supports arbitrary sections. The name of the function or the name of the data item determines the section's name in the output file.

Use these options on systems where the linker can perform optimizations to improve locality of reference in the instruction space. Most systems using the ELF object format and SPARC processors running Solaris 2 have linkers with such optimizations. AIX may have these optimizations in the future.

Only use these options when there are significant benefits from doing so. When you specify these options, the assembler and linker will create larger object and executable files and will also be slower. You will not be able to use gprof on all systems if you specify this option and you may have problems with debugging if you specify both this option and -g.

--gc-sections

--no-gc-sections

Enable garbage collection of unused input sections. It is ignored on targets that do not support this option. The default behaviour (of not performing this garbage collection) can be restored by specifying `--no-gc-sections' on the command line.

`--gc-sections' decides which input sections are used by examining symbols and relocations. The section containing the entry symbol and all sections containing symbols undefined on the command-line will be kept, as will sections containing symbols referenced by dynamic objects. Note that when building shared libraries, the linker must assume that any visible symbol is referenced. Once this initial set of sections has been determined, the linker recursively marks as used any section referenced by their relocations. See `--entry' and `--undefined'.

This option can be set when doing a partial link (enabled with option `-r'). In this case the root of symbols kept must be explicitly specified either by an `--entry' or `--undefined' option or by a ENTRY command in the linker script.

因为GCC链接操作以section作为最小的处理单元,只要一个section中有某个符号被引用,该section就会被加入。

如果我们的某个.c程序中所有function都加入同一个section.则如果用到这个.c生成的.o的其中任何一个function.则必须将所有function(符号)加入其中。如此,则使用-ffunction-sections 和 -fdata-sections将每个符号创建为一个sections. sections名与function,data名保持一致。

则在link阶段,-Wl,--gc-sections 申明去掉不用的section。就可以去掉没用的function(符号)了。

总体思想就是这样,Sam决定以验证之。

1. 验证过程:

Sam决定以Hi3716C平台中,Graphics_Base,libSTBUtils,3D_Example_HIGO此层次结构为例,研究之。

Graphics_Base是个底层库,架设在HiAPI之上,Sam当时选择将其编译为静态库。

libSTBUtils则是中间层,它架设在Graphics_Base层之上,作为3D应用程序的支持库,Sam选择其为动态库。

3D_Example_HIGO是个3D应用程序。依赖于libSTBUtils.so.

首先于Graphics_Base开始。它由多个.c文件组成。最终编译为静态库---libGraphics_Base.a

1.1 : 静态库中的分别:

即:产生静态库时,是否使用-ffunction-sections, -fdata-sections产生的不同后果。

1.1.1: 不使用-ffunction-sections, -fdata-sections

#arm-hisiv200-linux-gcc -c -O2 ...

#arm-hisiv200-linux-ar rv libGraphics_Base.a $?

此时,我们会希望看到以下2中信息:

1. .a中包含的符号。

2. .a中包含的sections.

首先看符号:

#arm-hisiv200-linux-readelf  -s libGraphics_Base.a

其次看section:

#arm-hisiv200-linux-readelf -t libGraphics_Base.a

结果如下:

#arm-hisiv200-linux-readelf  -s libGraphics_Base.a

以下是节选:

140: 00000000   160 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_SetVdecAttr

141: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetAttr

142: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_SetAttr

143: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND puts

144: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND printf

145: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND _GLOBAL_OFFSET_TABLE_

146: 000000a0   168 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_SetVdecAdvAt

147: 00000148  1432 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_SetAdecAttr

148: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HIADP_HDMI_SetAdecAttr

149: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_SetSampleRate

150: 00000004  1024 OBJECT  GLOBAL DEFAULT  COM u8DecOpenBuf

151: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND __aeabi_uidivmod

152: 000006e0   264 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_PlayAud

153: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Stop

154: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Start

155: 000007e8   524 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_PlayProg

156: 000009f4   504 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_Create

157: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetDefaultC

158: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Create

159: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_ChnOpen

160: 00000bec   220 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_RegADecLib

161: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_RegisterAco

162: 00000cc8    24 FUNC    GLOBAL DEFAULT    1 HIADP_AVPlay_Init

163: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Init

164: 00000ce0    56 FUNC    GLOBAL DEFAULT    1 HIADP_SLIC_Close

165: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND close

166: 00000d18    92 FUNC    GLOBAL DEFAULT    1 HIADP_AIAO_DeInit

167: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AI_DisableChn

168: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AI_Disable

169: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AO_DisableChn

170: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AO_Disable

171: 00000d74   164 FUNC    GLOBAL DEFAULT    1 HIADP_SLIC_SetRinging

172: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND ioctl

173: 00000e18    96 FUNC    GLOBAL DEFAULT    1 HIADP_SLIC_GetHookOn

174: 00000e78    96 FUNC    GLOBAL DEFAULT    1 HIADP_SLIC_GetHookOff

175: 00000ed8   116 FUNC    GLOBAL DEFAULT    1 HIADP_SLIC_Open

176: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND open

177: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND sleep

178: 00000f4c   632 FUNC    GLOBAL DEFAULT    1 HIADP_AIAO_Init

179: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND AudioSIOPinSharedEnable

180: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AI_SetPubAttr

181: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AI_Enable

182: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AI_EnableChn

183: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AO_SetPubAttr

184: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AO_Enable

185: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_MPI_AO_EnableChn

186: 000011c4   172 FUNC    GLOBAL DEFAULT    1 HIADP_Snd_DeInit

187: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_SetInterface

188: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_Close

189: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_DeInit

190: 00001270   196 FUNC    GLOBAL DEFAULT    1 HIADP_Snd_Init   191: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_Init

192: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_SND_Open

193: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND AudioLineOutMuteCntrDisab

194: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND AudioSPDIFOutSharedEnable

195: 00001334   100 FUNC    GLOBAL DEFAULT    1 HIADP_VO_DeInit

196: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_VO_Close

197: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_VO_DeInit

198: 00001398   148 FUNC    GLOBAL DEFAULT    1 HIADP_VO_CreatWin

199: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_VO_CreateWindow

200: 0000142c   104 FUNC    GLOBAL DEFAULT    1 HIADP_VO_Init

201: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_VO_Init

202: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_VO_Open

203: 00001494   156 FUNC    GLOBAL DEFAULT    1 HIADP_Disp_DeInit

204: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_Close

205: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_Detach

206: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_DeInit

207: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HIADP_HDMI_DeInit

208: 00001530   480 FUNC    GLOBAL DEFAULT    1 HIADP_Disp_Init

209: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_Init

210: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_SetBgColor

211: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_SetIntfType

212: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_SetFormat

213: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_SetDacMode

214: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_Attach

215: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HI_UNF_DISP_Open

216: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND HIADP_HDMI_Init

217: 00001710   216 FUNC    GLOBAL DEFAULT    1 HIADP_Disp_StrToFmt   218: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND strcasestr

明显可以看到,以棕色标记的是.a生成的符号。在.a中有实现。

而以红色标记的符号,则大都是HIAPI所提供的符号。它的实现在HI Lib中。所以是UND.

再看sections:

#arm-hisiv200-linux-readelf -t libGraphics_Base.a

节选如下:

Sam只选中一个.o作为代表。

File: libGraphics_Base.a(hi_adp_mpi.o)

There are 15 section headers, starting at offset 0x24f8:

Section Headers:

[Nr] Name

Type            Addr     Off    Size   ES   Lk Inf Al

Flags

[ 0]

NULL            00000000 000000 000000 00   0   0  0

[00000000]:

[ 1] .text

PROGBITS        00000000 000034 0017e8 00   0   0  4

[00000006]: ALLOC, EXEC

[ 2] .rel.text

REL             00000000 003cfc 0008f8 08  13   1  4

[00000000]:

[ 3] .data

PROGBITS        00000000 00181c 000014 00   0   0  4

[00000003]: WRITE, ALLOC

[ 4] .bss

NOBITS          00000000 001830 000000 00   0   0  1

[00000003]: WRITE, ALLOC

[ 5] .rodata

PROGBITS        00000000 001830 000030 00   0   0  4

[00000002]: ALLOC

[ 6] .data.rel.ro.local

PROGBITS        00000000 001860 000078 00   0   0  4

[00000003]: WRITE, ALLOC

[ 7] .rel.data.rel.ro.local

REL             00000000 0045f4 0000a0 08  13   6  4

[00000000]:

[ 8] .rodata.str1.4

PROGBITS        00000000 0018d8 000b2c 01   0   0  4

[00000032]: ALLOC, MERGE, STRINGS

[ 9] .comment

PROGBITS        00000000 002404 00003e 00   0   0  1

[00000000]:

[10] .note.GNU-stack

PROGBITS        00000000 002442 000000 00   0   0  1

[00000000]:

[11] .ARM.attributes

ARM_ATTRIBUTES  00000000 002442 00002d 00   0   0  1

[00000000]:

[12] .shstrtab

STRTAB          00000000 00246f 000087 00   0   0  1

[00000000]:

[13] .symtab

SYMTAB          00000000 002750 000db0 10  14 140  4

[00000000]:

[14] .strtab

STRTAB          00000000 003500 0007fb 00   0   0  1

可以看到,function是放到同一个section中去的。

此时libGraphics_Base.a的大小为:

68564 byte.

1.1.2: 使用-ffunction-sections, -fdata-sections

#arm-hisiv200-linux-gcc -c  -fpic -shared  -Wall -O2 -ffunction-sections -fdata-sections ...

#arm-hisiv200-linux-ar rv libGraphics_Base.a

此时,因为在编译阶段添加了-ffunction-sections -fdata-sections, 所以.o应该生成了以function 名为section名的section.

看生成的section:

#arm-hisiv200-linux-readelf -t libGraphics_Base.a

File: libGraphics_Base.a(hi_adp_hdmi.o)

There are 49 section headers, starting at offset 0x1414:

Section Headers:

[Nr] Name

Type            Addr     Off    Size   ES   Lk Inf Al

Flags

[ 0]

NULL            00000000 000000 000000 00   0   0  0

[00000000]:

[ 1] .text

PROGBITS        00000000 000034 000000 00   0   0  1

[00000006]: ALLOC, EXEC

[ 2] .data

PROGBITS        00000000 000034 000000 00   0   0  1

[00000003]: WRITE, ALLOC

[ 3] .bss

NOBITS          00000000 000034 000000 00   0   0  1

[00000003]: WRITE, ALLOC

[ 4] .text.HIADP_HDMI_SetAdecAttr

PROGBITS        00000000 000034 00003c 00   0   0  4

[00000006]: ALLOC, EXEC

[ 5] .rel.text.HIADP_HDMI_SetAdecAttr

REL             00000000 0028d8 000018 08  47   4  4

[00000000]:

[ 6] .text.HIADP_HDMI_DeInit

PROGBITS        00000000 000070 000020 00   0   0  4

[00000006]: ALLOC, EXEC

[ 7] .rel.text.HIADP_HDMI_DeInit

REL             00000000 0028f0 000018 08  47   6  4

[00000000]:

[ 8] .text.HDMI_PinConfig

PROGBITS        00000000 000090 000038 00   0   0  4

[00000006]: ALLOC, EXEC

[ 9] .rel.text.HDMI_PinConfig

REL             00000000 002908 000018 08  47   8  4

[00000000]:

[10] .text.HIADP_HDMI_Init

PROGBITS        00000000 0000c8 000160 00   0   0  4

[00000006]: ALLOC, EXEC

[11] .rel.text.HIADP_HDMI_Init

REL             00000000 002920 000090 08  47  10  4

[00000000]:

[12] .text.HDMI_HdcpSuccess_Proc

PROGBITS        00000000 000228 00001c 00   0   0  4

[00000006]: ALLOC, EXEC

[13] .rel.text.HDMI_HdcpSuccess_Proc

REL             00000000 0029b0 000018 08  47  12  4

[00000000]:

[14] .text.HDMI_HdcpFail_Proc

PROGBITS        00000000 000244 000058 00   0   0  4

[00000006]: ALLOC, EXEC

[15] .rel.text.HDMI_HdcpFail_Proc

REL             00000000 0029c8 000030 08  47  14  4

[00000000]:

[16] .text.HDMI_UnPlug_Proc

PROGBITS        00000000 00029c 000030 00   0   0  4

[00000006]: ALLOC, EXEC

[17] .rel.text.HDMI_UnPlug_Proc

REL             00000000 0029f8 000020 08  47  16  4

[00000000]:

[18] .text.HDMI_PrintSinkCap

PROGBITS        00000000 0002cc 0001d8 00   0   0  4

[00000006]: ALLOC, EXEC

[19] .rel.text.HDMI_PrintSinkCap

REL             00000000 002a18 000128 08  47  18  4

[00000000]:

[20] .text.HDMI_HotPlug_Proc

PROGBITS        00000000 0004a4 000490 00   0   0  4

[00000006]: ALLOC, EXEC

[21] .rel.text.HDMI_HotPlug_Proc

REL             00000000 002b40 0000f0 08  47  20  4

[00000000]:

[22] .text.HDMI_Event_Proc

PROGBITS        00000000 000934 0000e0 00   0   0  4

[00000006]: ALLOC, EXEC

[23] .rel.text.HDMI_Event_Proc

REL             00000000 002c30 000038 08  47  22  4

[00000000]:

[24] .text.stringToUnfFmt

PROGBITS        00000000 000a14 0000dc 00   0   0  4

[00000006]: ALLOC, EXEC

[25] .rel.text.stringToUnfFmt

REL             00000000 002c68 000050 08  47  24  4

[00000000]:

[26] .bss.g_HDCPFlag

NOBITS          00000000 000af0 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[27] .bss.g_ForceDVIFlag

NOBITS          00000000 000af0 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[28] .bss.pfnHdmiUserCallback

NOBITS          00000000 000af0 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[29] .data.g_AudioChannelNum

PROGBITS        00000000 000af0 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[30] .data.g_HDMIForceMode

PROGBITS        00000000 000af4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[31] .bss.g_stHdmiArgs

NOBITS          00000000 000af8 00001c 00   0   0  4

[00000003]: WRITE, ALLOC

[32] .data.rel.ro.local.g_pDispFmtString

PROGBITS        00000000 000af8 000078 00   0   0  4

[00000003]: WRITE, ALLOC

[33] .rel.data.rel.ro.local.g_pDispFmtString

REL             00000000 002cb8 0000a0 08  47  32  4

[00000000]:

[34] .data.g_AudioFreq

PROGBITS        00000000 000b70 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[35] .rodata.str1.4

PROGBITS        00000000 000b74 000540 01   0   0  4

[00000032]: ALLOC, MERGE, STRINGS

[36] .bss.g_AudioInputType

NOBITS          00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[37] .bss.HDCPFailCount

NOBITS          00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[38] .bss.g_HDMIUserCallbackFlag

NOBITS          00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[39] .bss.g_Audiotype

NOBITS          00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[40] .bss.g_HDMI_Bebug

NOBITS          00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[41] .data.g_AduioBitPerSample

PROGBITS        00000000 0010b4 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[42] .data.u8FirstTimeSetting.5421

PROGBITS        00000000 0010b8 000001 00   0   0  1

[00000003]: WRITE, ALLOC

[43] .comment

PROGBITS        00000000 0010b9 00003e 00   0   0  1

[00000000]:

[44] .note.GNU-stack

PROGBITS        00000000 0010f7 000000 00   0   0  1

[00000000]:

[45] .ARM.attributes

ARM_ATTRIBUTES  00000000 0010f7 00002d 00   0   0  1

[00000000]:

[46] .shstrtab

STRTAB          00000000 001124 0002ee 00   0   0  1

[00000000]:

[47] .symtab

SYMTAB          00000000 001bbc 000930 10  48 106  4

[00000000]:

[48] .strtab

STRTAB          00000000 0024ec 0003e9 00   0   0  1

[00000000]:

看到所有function都成为一个单独的section. 说明-ffunction-sections起效果了。

关于符号,则肯定包含所有符号。

大小是:

82496 byte.

1.1.3: 结论:

添加-ffunction-sections -ffdata-sections后,.o 以及.a都会size大不少。

从68564 大到 82496 。

毕竟多建立很多sections.

1.2: 动态库包含静态库中的分别:

即:产生动态库时,是否使用-ffunction-sections, -fdata-sections产生的不同后果。 以及动态库包含静态库时,使用-Wl,--gc-sections

libSTBUtils.so依赖于libGraphics_Base.a.

1.2.1:

动态库生产时不使用-ffunction-sections, -fdata-sections,且所用静态库libGraphics_Base.a也不使用-ffunction-sections, -fdata-sections。

#arm-hisiv200-linux-gcc -c...

#arm-hisiv200-linux-gcc -L../resource -L./ hi_egl.o -L../resource -fPIC -shared   -o libSTBUtils.so -lGraphics_Base  .....

生成.o时使用了没使用-ffunction-sections, -fdata-sections。

首先看section.

#arm-hisiv200-linux-readelf -t libSTBUtils.so

There are 31 section headers, starting at offset 0x7b64:

Section Headers:

[Nr] Name

Type            Addr     Off    Size   ES   Lk Inf Al

Flags

[ 0]

NULL            00000000 000000 000000 00   0   0  0

[00000000]:

[ 1] .hash

HASH            000000b4 0000b4 000508 04   2   0  4

[00000002]: ALLOC

[ 2] .dynsym

DYNSYM          000005bc 0005bc 000bd0 10   3   3  4

[00000002]: ALLOC

[ 3] .dynstr

STRTAB          0000118c 00118c 000ccf 00   0   0  1

[00000002]: ALLOC

[ 4] .gnu.version

VERSYM          00001e5c 001e5c 00017a 02   2   0  2

[00000002]: ALLOC

[ 5] .gnu.version_r

VERNEED         00001fd8 001fd8 000040 00   3   2  4

[00000002]: ALLOC

[ 6] .rel.dyn

REL             00002018 002018 000200 08   2   0  4

[00000002]: ALLOC

[ 7] .rel.plt

REL             00002218 002218 000400 08   2   9  4

[00000002]: ALLOC

[ 8] .init

PROGBITS        00002618 002618 00000c 00   0   0  4

[00000006]: ALLOC, EXEC

[ 9] .plt

PROGBITS        00002624 002624 000614 04   0   0  4

[00000006]: ALLOC, EXEC

[10] .text

PROGBITS        00002c38 002c38 00323c 00   0   0  4

[00000006]: ALLOC, EXEC

[11] .fini

PROGBITS        00005e74 005e74 000008 00   0   0  4

[00000006]: ALLOC, EXEC

[12] .rodata

PROGBITS        00005e7c 005e7c 0011ac 00   0   0  4

[00000002]: ALLOC

[13] .init_array

INIT_ARRAY      0000f028 007028 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[14] .fini_array

FINI_ARRAY      0000f02c 00702c 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[15] .jcr

PROGBITS        0000f030 007030 000004 00   0   0  4

[00000003]: WRITE, ALLOC

[16] .data.rel.ro

PROGBITS        0000f034 007034 0000f0 00   0   0  4

[00000003]: WRITE, ALLOC

[17] .dynamic

DYNAMIC         0000f124 007124 000170 08   3   0  4

[00000003]: WRITE, ALLOC

[18] .got

PROGBITS        0000f294 007294 000260 04   0   0  4

[00000003]: WRITE, ALLOC

[19] .data

PROGBITS        0000f4f4 0074f4 000030 00   0   0  4

[00000003]: WRITE, ALLOC

[20] .bss

NOBITS          0000f524 007524 000454 00   0   0  4

[00000003]: WRITE, ALLOC

[21] .ARM.attributes

ARM_ATTRIBUTES  00000000 007524 000034 00   0   0  1

[00000000]:

[22] .comment

PROGBITS        00000000 007558 0001f0 00   0   0  1

[00000000]:

[23] .debug_aranges

PROGBITS        00000000 007748 000040 00   0   0  8

[00000000]:

[24] .debug_info

PROGBITS        00000000 007788 000172 00   0   0  1

[00000000]:

[25] .debug_abbrev

PROGBITS        00000000 0078fa 000028 00   0   0  1

[00000000]:

[26] .debug_line

PROGBITS        00000000 007922 000107 00   0   0  1

[00000000]:

[27] .debug_frame

PROGBITS        00000000 007a2c 000020 00   0   0  4

[00000000]:

[28] .shstrtab

STRTAB          00000000 007a4c 000117 00   0   0  1

[00000000]:

[29] .symtab

SYMTAB          00000000 00803c 0017f0 10  30 197  4

[00000000]:

[30] .strtab

STRTAB          00000000 00982c 000f21 00   0   0  1

[00000000]:

可以看到function在同一个section中。

再看symbols:

节选:

Symbol table '.dynsym' contains 189 entries:

Num:    Value  Size Type    Bind   Vis      Ndx Name

0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND

1: 00002618     0 SECTION LOCAL  DEFAULT    8

2: 0000f030     0 SECTION LOCAL  DEFAULT   15

3: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (2)

4: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_SetInfoFrame

5: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_Disable

6: 00005084   168 FUNC    GLOBAL DEFAULT   10 AudioSIOPinSharedEnable

7: 0000f564     4 OBJECT  GLOBAL DEFAULT   20 g_NativeDisplay

8: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_SetAttr

9: 0000325c    68 FUNC    GLOBAL DEFAULT   10 hi_egl_makecurrent

10: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

11: 0000f560     4 OBJECT  GLOBAL DEFAULT   20 pfnHdmiUserCallback

12: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_SetInterface

13: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetBgColor

14: 0000522c   352 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_Init

15: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

16: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_SetAttr

17: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetInfoFrame

18: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetFormat

19: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_RefreshLayer

20: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_DestroyLayer

21: 0000560c  1168 FUNC    GLOBAL DEFAULT   10 HDMI_HotPlug_Proc

22: 0000f55c     4 OBJECT  GLOBAL DEFAULT   20 g_HDMIUserCallbackFlag

23: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_GetSampleRate

24: 0000f578  1024 OBJECT  GLOBAL DEFAULT   20 u8DecOpenBuf

25: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__

26: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses

27: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_SetPubAttr

28: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_GetLayerSurface

29: 000051d4    32 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_DeInit

30: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_DeInit

31: 00005404    48 FUNC    GLOBAL DEFAULT   10 HDMI_UnPlug_Proc

32: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Open

33: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

34: 00005e74     0 FUNC    GLOBAL DEFAULT   11 _fini

35: 00004d04   480 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_Init

36: 00004c00   104 FUNC    GLOBAL DEFAULT   10 HIADP_VO_Init

37: 0000f554     4 OBJECT  GLOBAL DEFAULT   20 g_ForceDVIFlag

38: 00000000     0 FUNC    GLOBAL DEFAULT  UND glGetError

39: 00002cf4    32 FUNC    GLOBAL DEFAULT   10 hi_egl_getdisp

40: 0000f548     4 OBJECT  GLOBAL DEFAULT   20 g_HDCPFlag

41: 0000391c  1432 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetAdecAttr

42: 00005198    60 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_SetAdecAttr

43: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

44: 0000449c    24 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_Init

45: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglInitialize

46: 000053a8    92 FUNC    GLOBAL DEFAULT   10 HDMI_HdcpFail_Proc

47: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

48: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_Init

49: 00000000     0 FUNC    GLOBAL DEFAULT  UND glCompressedTexImage2D

50: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_SetDirBit

51: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_EnableChn

52: 00004b08   100 FUNC    GLOBAL DEFAULT   10 HIADP_VO_DeInit

53: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglDestroyContext

54: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_ChnOpen

55: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_SetLayerSurface

56: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Init

57: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Close

58: 00003eb4   264 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_PlayAud

59: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglCreateContext

60: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_Init

61: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglMakeCurrent

62: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

63: 000046ac   116 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_Open

64: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Start

65: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetIntfType

66: 0000f4f4     0 NOTYPE  GLOBAL DEFAULT   19 __data_start

67: 0000538c    28 FUNC    GLOBAL DEFAULT   10 HDMI_HdcpSuccess_Proc

68: 000032a0    84 FUNC    GLOBAL DEFAULT   10 hi_egl_swap

69: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetDefaultC

70: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_DeInit

71: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

72: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Create

73: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_Enable

74: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start__

75: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglSwapBuffers

76: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Close

77: 0000f558     4 OBJECT  GLOBAL DEFAULT   20 g_HDMI_Bebug

78: 0000f550     4 OBJECT  GLOBAL DEFAULT   20 g_Audiotype

79: 00002e6c   512 FUNC    GLOBAL DEFAULT   10 hiLoadTGA

80: 0000f568     4 OBJECT  GLOBAL DEFAULT   20 g_EglDisplay

81: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

82: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_WriteRegister

83: 00004fbc   176 FUNC    GLOBAL DEFAULT   10 SetReg32Val

84: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetConfigAttrib

85: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_Disable

86: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_DisableChn

87: 0000464c    96 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_GetHookOff

88: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_Close

89: 00000000     0 FUNC    GLOBAL DEFAULT  UND glBindTexture

90: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetAttr

91: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_EnableChn

92: 0000f4f8     4 OBJECT  GLOBAL DEFAULT   19 g_enEncFmt

93: 0000f518     4 OBJECT  GLOBAL DEFAULT   19 g_AduioBitPerSample

94: 0000f56c     4 OBJECT  GLOBAL DEFAULT   20 g_NativeWindow

95: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglDestroySurface

96: 00004b6c   148 FUNC    GLOBAL DEFAULT   10 HIADP_VO_CreatWin

97: 000045ec    96 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_GetHookOn

98: 00000000     0 FUNC    GLOBAL DEFAULT  UND glDeleteTextures

99: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS __end__

100: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_CreateLayer

101: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_end__

102: 00005434   472 FUNC    GLOBAL DEFAULT   10 HDMI_PrintSinkCap

103: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

104: 0000306c   496 FUNC    GLOBAL DEFAULT   10 hiLoad2DTexture

105: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetAttr

106: 00000000     0 FUNC    GLOBAL DEFAULT  UND glPixelStorei

107: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (2)

108: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetDacMode

109: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_DeInit

110: 000044b4    56 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_Close

111: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Open

112: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Init

113: 00002d14    32 FUNC    GLOBAL DEFAULT   10 hi_egl_getsurface

114: 00003780     4 FUNC    GLOBAL DEFAULT   10 hi_egl_DeInit

115: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_Open

116: 00002d34   312 FUNC    GLOBAL DEFAULT   10 hiLoadPKM

117: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_CreateWindow

118: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_RegisterAco

119: 00004720   632 FUNC    GLOBAL DEFAULT   10 HIADP_AIAO_Init

120: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (2)

121: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

122: 0000f54c     4 OBJECT  GLOBAL DEFAULT   20 g_AudioInputType

123: 0000f51c     4 OBJECT  GLOBAL DEFAULT   19 g_AudioChannelNum

124: 0000f520     4 OBJECT  GLOBAL DEFAULT   19 g_HDMIForceMode

125: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_Enable

126: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start

127: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_GetFormat

128: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_SetPubAttr

129: 00000000     0 FUNC    GLOBAL DEFAULT  UND glTexImage2D

130: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Init

131: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

132: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetError

133: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS _bss_end__

134: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Start

135: 00005b7c   220 FUNC    GLOBAL DEFAULT   10 stringToUnfFmt

136: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Open

137: 000033b4   972 FUNC    GLOBAL DEFAULT   10 hi_egl_setup

138: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_SetSampleRate

139: 000041c8   504 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_Create

140: 00003874   168 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetVdecAdvAt

141: 0000512c   108 FUNC    GLOBAL DEFAULT   10 AudioLineOutMuteCntrDisab

142: 000037d4   160 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetVdecAttr

143: 0000f514     4 OBJECT  GLOBAL DEFAULT   19 g_AudioFreq

144: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

145: 000044ec    92 FUNC    GLOBAL DEFAULT   10 HIADP_AIAO_DeInit

146: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Attach

147: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Close

148: 000043c0   220 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_RegADecLib

149: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

150: 00004ee4   216 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_StrToFmt

151: 00003fbc   524 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_PlayProg

152: 00004a44   196 FUNC    GLOBAL DEFAULT   10 HIADP_Snd_Init

153: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS _end

154: 00005a9c   224 FUNC    GLOBAL DEFAULT   10 HDMI_Event_Proc

155: 00004998   172 FUNC    GLOBAL DEFAULT   10 HIADP_Snd_DeInit

156: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Stop

157: 0000506c    24 FUNC    GLOBAL DEFAULT   10 AudioSPDIFOutSharedEnable

158: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_WriteBit

159: 00004548   164 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_SetRinging

160: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Init

161: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_DeInit

162: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Init

163: 000051f4    56 FUNC    GLOBAL DEFAULT   10 HDMI_PinConfig

164: 00000000     0 OBJECT  GLOBAL DEFAULT  UND  (3)

165: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetSinkCapabi

166: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Stop

167: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

168: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Open

169: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_DeInit

170: 000032f4   192 FUNC    GLOBAL DEFAULT   10 hi_egl_destroy

171: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_DisableChn

172: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Detach

173: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglBindAPI

174: 00003784    80 FUNC    GLOBAL DEFAULT   10 hi_egl_Init

175: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Close

176: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (3)

177: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS _edata

178: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetDisplay

179: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglTerminate

180: 00000000     0 FUNC    GLOBAL DEFAULT  UND glTexParameteri

181: 0000f570     4 OBJECT  GLOBAL DEFAULT   20 g_EglSurface

182: 0000f574     4 OBJECT  GLOBAL DEFAULT   20 g_EglContext

183: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglCreateWindowSurface

184: 00000000     0 FUNC    GLOBAL DEFAULT  UND glGenTextures

185: 00000000     0 FUNC    WEAK   DEFAULT  UND  (3)

186: 00002618     0 FUNC    GLOBAL DEFAULT    8 _init

187: 00004c68   156 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_DeInit

188: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglChooseConfig

197: 00000000     0 FUNC    GLOBAL DEFAULT  UND

198: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_SetInfoFrame

199: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_Disable

200: 00005084   168 FUNC    GLOBAL DEFAULT   10 AudioSIOPinSharedEnable

201: 0000f564     4 OBJECT  GLOBAL DEFAULT   20 g_NativeDisplay

202: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_SetAttr

203: 0000325c    68 FUNC    GLOBAL DEFAULT   10 hi_egl_makecurrent

204: 00000000     0 FUNC    GLOBAL DEFAULT  UND

205: 0000f560     4 OBJECT  GLOBAL DEFAULT   20 pfnHdmiUserCallback

206: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_SetInterface

207: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetBgColor

208: 0000522c   352 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_Init

209: 00000000     0 FUNC    GLOBAL DEFAULT  UND

210: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_SetAttr

211: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetInfoFrame

212: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetFormat

213: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_RefreshLayer

214: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_DestroyLayer

215: 0000560c  1168 FUNC    GLOBAL DEFAULT   10 HDMI_HotPlug_Proc

216: 0000f55c     4 OBJECT  GLOBAL DEFAULT   20 g_HDMIUserCallbackFlag

217: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_GetSampleRate

218: 0000f578  1024 OBJECT  GLOBAL DEFAULT   20 u8DecOpenBuf

219: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__

220: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses

221: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_SetPubAttr

222: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_GetLayerSurface

223: 000051d4    32 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_DeInit

224: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_DeInit

225: 00005404    48 FUNC    GLOBAL DEFAULT   10 HDMI_UnPlug_Proc

226: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Open

227: 00000000     0 FUNC    GLOBAL DEFAULT  UND

228: 00005e74     0 FUNC    GLOBAL DEFAULT   11 _fini

229: 00004d04   480 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_Init

230: 00004c00   104 FUNC    GLOBAL DEFAULT   10 HIADP_VO_Init

231: 0000f554     4 OBJECT  GLOBAL DEFAULT   20 g_ForceDVIFlag

232: 00000000     0 FUNC    GLOBAL DEFAULT  UND glGetError

233: 00002cf4    32 FUNC    GLOBAL DEFAULT   10 hi_egl_getdisp

234: 0000f548     4 OBJECT  GLOBAL DEFAULT   20 g_HDCPFlag

235: 0000391c  1432 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetAdecAttr

236: 00005198    60 FUNC    GLOBAL DEFAULT   10 HIADP_HDMI_SetAdecAttr

237: 00000000     0 FUNC    GLOBAL DEFAULT  UND

238: 0000449c    24 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_Init

239: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglInitialize

240: 000053a8    92 FUNC    GLOBAL DEFAULT   10 HDMI_HdcpFail_Proc

241: 00000000     0 FUNC    GLOBAL DEFAULT  UND

242: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_Init

243: 00000000     0 FUNC    GLOBAL DEFAULT  UND glCompressedTexImage2D

244: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_SetDirBit

245: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_EnableChn

246: 00004b08   100 FUNC    GLOBAL DEFAULT   10 HIADP_VO_DeInit

247: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglDestroyContext

248: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_ChnOpen

249: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_SetLayerSurface

250: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Init

251: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Close

252: 00003eb4   264 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_PlayAud

253: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglCreateContext

254: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_Init

255: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglMakeCurrent

256: 00000000     0 FUNC    GLOBAL DEFAULT  UND

257: 000046ac   116 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_Open

258: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Start

259: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetIntfType

260: 0000f4f4     0 NOTYPE  GLOBAL DEFAULT   19 __data_start

261: 0000538c    28 FUNC    GLOBAL DEFAULT   10 HDMI_HdcpSuccess_Proc

262: 000032a0    84 FUNC    GLOBAL DEFAULT   10 hi_egl_swap

263: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetDefaultC

264: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_DeInit

265: 00000000     0 FUNC    GLOBAL DEFAULT  UND

266: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Create

267: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_Enable

268: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start__

269: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglSwapBuffers

270: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Close

271: 0000f558     4 OBJECT  GLOBAL DEFAULT   20 g_HDMI_Bebug

272: 0000f550     4 OBJECT  GLOBAL DEFAULT   20 g_Audiotype

273: 00002e6c   512 FUNC    GLOBAL DEFAULT   10 hiLoadTGA

274: 0000f568     4 OBJECT  GLOBAL DEFAULT   20 g_EglDisplay

275: 00000000     0 FUNC    GLOBAL DEFAULT  UND

276: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_SYS_WriteRegister

277: 00004fbc   176 FUNC    GLOBAL DEFAULT   10 SetReg32Val

278: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetConfigAttrib

279: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_Disable

280: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AO_DisableChn

281: 0000464c    96 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_GetHookOff

282: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_Close

283: 00000000     0 FUNC    GLOBAL DEFAULT  UND glBindTexture

284: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_GetAttr

285: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_EnableChn

286: 0000f4f8     4 OBJECT  GLOBAL DEFAULT   19 g_enEncFmt

287: 0000f518     4 OBJECT  GLOBAL DEFAULT   19 g_AduioBitPerSample

288: 0000f56c     4 OBJECT  GLOBAL DEFAULT   20 g_NativeWindow

289: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglDestroySurface

290: 00004b6c   148 FUNC    GLOBAL DEFAULT   10 HIADP_VO_CreatWin

291: 000045ec    96 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_GetHookOn

292: 00000000     0 FUNC    GLOBAL DEFAULT  UND glDeleteTextures

293: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS __end__

294: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_GO_CreateLayer

295: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_end__

296: 00005434   472 FUNC    GLOBAL DEFAULT   10 HDMI_PrintSinkCap

297: 00000000     0 FUNC    GLOBAL DEFAULT  UND

298: 0000306c   496 FUNC    GLOBAL DEFAULT   10 hiLoad2DTexture

299: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetAttr

300: 00000000     0 FUNC    GLOBAL DEFAULT  UND glPixelStorei

301: 00000000     0 FUNC    GLOBAL DEFAULT  UND

302: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_SetDacMode

303: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_DeInit

304: 000044b4    56 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_Close

305: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Open

306: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Init

307: 00002d14    32 FUNC    GLOBAL DEFAULT   10 hi_egl_getsurface

308: 00003780     4 FUNC    GLOBAL DEFAULT   10 hi_egl_DeInit

309: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_Open

310: 00002d34   312 FUNC    GLOBAL DEFAULT   10 hiLoadPKM

311: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_CreateWindow

312: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_RegisterAco

313: 00004720   632 FUNC    GLOBAL DEFAULT   10 HIADP_AIAO_Init

314: 00000000     0 FUNC    GLOBAL DEFAULT  UND

315: 00000000     0 FUNC    GLOBAL DEFAULT  UND

316: 0000f54c     4 OBJECT  GLOBAL DEFAULT   20 g_AudioInputType

317: 0000f51c     4 OBJECT  GLOBAL DEFAULT   19 g_AudioChannelNum

318: 0000f520     4 OBJECT  GLOBAL DEFAULT   19 g_HDMIForceMode

319: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_Enable

320: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start

321: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_GetFormat

322: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_SetPubAttr

323: 00000000     0 FUNC    GLOBAL DEFAULT  UND glTexImage2D

324: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Init

325: 00000000     0 FUNC    GLOBAL DEFAULT  UND

326: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetError

327: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS _bss_end__

328: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Start

329: 00005b7c   220 FUNC    GLOBAL DEFAULT   10 stringToUnfFmt

330: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Open

331: 000033b4   972 FUNC    GLOBAL DEFAULT   10 hi_egl_setup

332: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_SetSampleRate

333: 000041c8   504 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_Create

334: 00003874   168 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetVdecAdvAt

335: 0000512c   108 FUNC    GLOBAL DEFAULT   10 AudioLineOutMuteCntrDisab

336: 000037d4   160 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_SetVdecAttr

337: 0000f514     4 OBJECT  GLOBAL DEFAULT   19 g_AudioFreq

338: 00000000     0 FUNC    GLOBAL DEFAULT  UND

339: 000044ec    92 FUNC    GLOBAL DEFAULT   10 HIADP_AIAO_DeInit

340: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Attach

341: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_SND_Close

342: 000043c0   220 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_RegADecLib

343: 00000000     0 FUNC    GLOBAL DEFAULT  UND

344: 00004ee4   216 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_StrToFmt

345: 00003fbc   524 FUNC    GLOBAL DEFAULT   10 HIADP_AVPlay_PlayProg

346: 00004a44   196 FUNC    GLOBAL DEFAULT   10 HIADP_Snd_Init

347: 0000f978     0 NOTYPE  GLOBAL DEFAULT  ABS _end

348: 00005a9c   224 FUNC    GLOBAL DEFAULT   10 HDMI_Event_Proc

349: 00004998   172 FUNC    GLOBAL DEFAULT   10 HIADP_Snd_DeInit

350: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_AVPLAY_Stop

351: 0000506c    24 FUNC    GLOBAL DEFAULT   10 AudioSPDIFOutSharedEnable

352: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_GPIO_WriteBit

353: 00004548   164 FUNC    GLOBAL DEFAULT   10 HIADP_SLIC_SetRinging

354: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Init

355: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_DeInit

356: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_Init

357: 000051f4    56 FUNC    GLOBAL DEFAULT   10 HDMI_PinConfig

358: 00000000     0 OBJECT  GLOBAL DEFAULT  UND

359: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_GetSinkCapabi

360: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Stop

361: 00000000     0 FUNC    GLOBAL DEFAULT  UND

362: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Open

363: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_VO_DeInit

364: 000032f4   192 FUNC    GLOBAL DEFAULT   10 hi_egl_destroy

365: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_MPI_AI_DisableChn

366: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_DISP_Detach

367: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglBindAPI

368: 00003784    80 FUNC    GLOBAL DEFAULT   10 hi_egl_Init   369: 00000000     0 FUNC    GLOBAL DEFAULT  UND HI_UNF_HDMI_Close

370: 00000000     0 FUNC    GLOBAL DEFAULT  UND

371: 0000f524     0 NOTYPE  GLOBAL DEFAULT  ABS _edata

372: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglGetDisplay

373: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglTerminate

374: 00000000     0 FUNC    GLOBAL DEFAULT  UND glTexParameteri

375: 0000f570     4 OBJECT  GLOBAL DEFAULT   20 g_EglSurface

376: 0000f574     4 OBJECT  GLOBAL DEFAULT   20 g_EglContext

377: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglCreateWindowSurface

378: 00000000     0 FUNC    GLOBAL DEFAULT  UND glGenTextures

379: 00000000     0 FUNC    WEAK   DEFAULT  UND

380: 00002618     0 FUNC    GLOBAL DEFAULT    8 _init

381: 00004c68   156 FUNC    GLOBAL DEFAULT   10 HIADP_Disp_DeInit

382: 00000000     0 FUNC    GLOBAL DEFAULT  UND eglChooseConfig

注意:

libSTBUtils.so: 所导出出hi_gel_Init()等符号均有导出。

且所用到的libGraphics_Base.a 符号也有导出和实现。 HIAPI以及Glibc的符号均为等待链接。但请注意,有些符号如:HIADP_Snd_Init,其实并未用到,但也包含在libSTBUtils.so中了。

这里libSTBUtils.so大小为:

42829。

说明动态库依赖于静态库时,也只是挑选自己用到的东西。并非全部包含。但某些未用到的符号,也会被包含其中。

1.2.2:

动态库生产时使用-ffunction-sections, -fdata-sections,且所用静态库libGraphics_Base.a也使用-ffunction-sections, -fdata-sections。 同时,ld时还使用 -Wl,--gc-sections

Sam发现虽然.o生成了多个section. 但so 却并未有多个section.

存疑。

但符号却并不见减少。 也存疑问。并经使用了 -Wl,--gc-sections

库大小是:

43261

1.2.3: 结论:

1.3:

应用程序:

1.3.1:

使用未-ffunction-sections,-fdata-sections的动态库,且不使用-Wl,--gc-sections.

#arm-hisiv200-linux-g++ -c

#arm-hisiv200-linux-g++ -L../resource main.o font.o mesh.o render.o texture.o timer.o  -o 3D_Example_HIGO -lSTBUtils ....

1.3.1.1: 查看符号:

Symbol table '.dynsym' contains 103 entries:

Num:    Value  Size Type    Bind   Vis      Ndx Name

0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND

1: 00009510     0 FUNC    GLOBAL DEFAULT  UND  (2)

2: 0000951c     0 FUNC    GLOBAL DEFAULT  UND glEnable

3: 00015598     4 OBJECT  GLOBAL DEFAULT   23 mesh

4: 00009528     0 FUNC    GLOBAL DEFAULT  UND glTexCoordPointer

5: 00009534     0 FUNC    GLOBAL DEFAULT  UND  (3)

6: 00009540     0 FUNC    GLOBAL DEFAULT  UND _Znaj

7: 000155a8     4 OBJECT  GLOBAL DEFAULT   23 texture

8: 0000954c     0 FUNC    GLOBAL DEFAULT  UND  (2)

9: 00009558     0 FUNC    GLOBAL DEFAULT  UND  (3)

10: 00009564     0 FUNC    GLOBAL DEFAULT  UND glEnableClientState

11: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (2)

12: 00009570     0 FUNC    GLOBAL DEFAULT  UND _ZdaPv

13: 0000957c     0 FUNC    GLOBAL DEFAULT  UND  (2)

14: 00009588     0 FUNC    GLOBAL DEFAULT  UND glMatrixMode

15: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__

16: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses

17: 000095a0     0 FUNC    GLOBAL DEFAULT  UND glDisable

18: 000095ac     0 FUNC    GLOBAL DEFAULT  UND glClear

19: 000095b8     0 FUNC    GLOBAL DEFAULT  UND  (2)

20: 000095c4     0 FUNC    GLOBAL DEFAULT  UND  (3)

21: 00014570     4 OBJECT  GLOBAL DEFAULT   22 width

22: 000095d0     0 FUNC    GLOBAL DEFAULT  UND  (3)

23: 0000bf48     0 FUNC    GLOBAL DEFAULT   13 _fini

24: 000095dc     0 FUNC    GLOBAL DEFAULT  UND glOrthox

25: 000095e8     0 FUNC    GLOBAL DEFAULT  UND glColor4x

26: 000095f4     0 FUNC    GLOBAL DEFAULT  UND glGetError

27: 00009600     0 FUNC    GLOBAL DEFAULT  UND hi_egl_getdisp

28: 0000960c     0 FUNC    GLOBAL DEFAULT  UND  (3)

29: 00009618     0 FUNC    GLOBAL DEFAULT  UND glClearColorx

30: 00014574     4 OBJECT  GLOBAL DEFAULT   22 height

31: 00009624     0 FUNC    GLOBAL DEFAULT  UND _ZdlPv

32: 0001559c     4 OBJECT  GLOBAL DEFAULT   23 font

33: 00009630     0 FUNC    GLOBAL DEFAULT  UND eglQuerySurface

34: 0000963c     0 FUNC    GLOBAL DEFAULT  UND glLoadIdentity

35: 00014580     4 OBJECT  GLOBAL DEFAULT   23 x

36: 00009648     0 FUNC    GLOBAL DEFAULT  UND glDeleteBuffers

37: 00009654     0 FUNC    GLOBAL DEFAULT  UND  (3)

38: 00009660     0 FUNC    GLOBAL DEFAULT  UND  (2)

39: 0000966c     0 FUNC    GLOBAL DEFAULT  UND glShadeModel

40: 00014568     0 NOTYPE  GLOBAL DEFAULT   22 __data_start

41: 00009678     0 FUNC    GLOBAL DEFAULT  UND hi_egl_swap

42: 00009684     0 FUNC    GLOBAL DEFAULT  UND  (3)

43: 00009690     0 FUNC    GLOBAL DEFAULT  UND glBufferData

44: 0000969c     0 FUNC    GLOBAL DEFAULT  UND  (3)

45: 000096a8     0 FUNC    GLOBAL DEFAULT  UND BCMUtil_Audio_Destroy

46: 000096b4     0 FUNC    GLOBAL DEFAULT  UND glNormalPointer

47: 000096c0     0 FUNC    GLOBAL DEFAULT  UND __gxx_personality_v0

48: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start__

49: 000096cc     0 FUNC    GLOBAL DEFAULT  UND glBlendFunc

50: 000096d8     0 FUNC    GLOBAL DEFAULT  UND  (3)

51: 000096e4     0 FUNC    GLOBAL DEFAULT  UND glBindTexture

52: 000096f0     0 FUNC    GLOBAL DEFAULT  UND glTexParameterx

53: 00014588     4 OBJECT  GLOBAL DEFAULT   23 sampling

54: 000096fc     0 FUNC    GLOBAL DEFAULT  UND  (3)

55: 0001458c     4 OBJECT  GLOBAL DEFAULT   23 iNum

56: 00009708     0 FUNC    GLOBAL DEFAULT  UND glTranslatef

57: 00014584     4 OBJECT  GLOBAL DEFAULT   23 y

58: 00009714     0 FUNC    GLOBAL DEFAULT  UND glDeleteTextures

59: 00009720     0 FUNC    GLOBAL DEFAULT  UND  (2)

60: 0000972c     0 FUNC    GLOBAL DEFAULT  UND  (3)

61: 00009738     0 FUNC    GLOBAL DEFAULT  UND glDisableClientState

62: 00009744     0 FUNC    GLOBAL DEFAULT  UND __cxa_end_cleanup

63: 00009750     0 FUNC    GLOBAL DEFAULT  UND  (2)

64: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS __end__

65: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_end__

66: 0000975c     0 FUNC    GLOBAL DEFAULT  UND  (3)

67: 00009768     0 FUNC    GLOBAL DEFAULT  UND hiLoad2DTexture

68: 00009774     0 FUNC    GLOBAL DEFAULT  UND glFrustumf

69: 00015590     1 OBJECT  GLOBAL DEFAULT   23 _ZN13BitmappedFont11m_ins

70: 00009780     0 FUNC    GLOBAL DEFAULT  UND hi_egl_getsurface

71: 0000978c     0 FUNC    GLOBAL DEFAULT  UND hi_egl_DeInit

72: 00009798     0 FUNC    GLOBAL DEFAULT  UND glGenBuffers

73: 000097a4     0 FUNC    GLOBAL DEFAULT  UND glDrawElements

74: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start

75: 000097b0     0 FUNC    GLOBAL DEFAULT  UND glTexImage2D

76: 000097bc     0 FUNC    GLOBAL DEFAULT  UND glRotatef

77: 000097c8     0 FUNC    GLOBAL DEFAULT  UND  (2)

78: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS _bss_end__

79: 00014578     4 OBJECT  GLOBAL DEFAULT   22 frames

80: 000097d4     0 FUNC    GLOBAL DEFAULT  UND glDrawArrays

81: 000097e0     0 FUNC    GLOBAL DEFAULT  UND  (2)

82: 000097ec     0 FUNC    GLOBAL DEFAULT  UND hi_egl_setup

83: 00014590  4096 OBJECT  GLOBAL DEFAULT   23 _ZN13BitmappedFont20m_tex

84: 000155a4     4 OBJECT  GLOBAL DEFAULT   23 timer

85: 000097f8     0 FUNC    GLOBAL DEFAULT  UND  (3)

86: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS _end

87: 00009804     0 FUNC    GLOBAL DEFAULT  UND glBindBuffer

88: 00009810     0 FUNC    GLOBAL DEFAULT  UND  (2)

89: 0000981c     0 FUNC    GLOBAL DEFAULT  UND glVertexPointer

90: 00009828     0 FUNC    GLOBAL DEFAULT  UND  (4)

91: 00009834     0 FUNC    GLOBAL DEFAULT  UND hi_egl_destroy

92: 00009840     0 FUNC    GLOBAL DEFAULT  UND hi_egl_Init

93: 0000984c     0 FUNC    GLOBAL DEFAULT  UND  (3)

94: 00009858     0 FUNC    GLOBAL DEFAULT  UND  (2)

95: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS _edata

96: 00009864     0 FUNC    GLOBAL DEFAULT  UND _Znwj

97: 00000000     0 FUNC    GLOBAL DEFAULT  UND  (2)

98: 00009870     0 FUNC    GLOBAL DEFAULT  UND BCMUtil_Audio_Init

99: 0000987c     0 FUNC    GLOBAL DEFAULT  UND  (3)

100: 000155a0     4 OBJECT  GLOBAL DEFAULT   23 meshTexture

101: 00009888     0 FUNC    GLOBAL DEFAULT  UND glGenTextures

102: 000094f0     0 FUNC    GLOBAL DEFAULT   10 _init

137: 000143f4     0 OBJECT  LOCAL  HIDDEN   21 _GLOBAL_OFFSET_TABLE_

138: 00014254     0 NOTYPE  LOCAL  HIDDEN   17 __init_array_end

139: 00014250     0 NOTYPE  LOCAL  HIDDEN   17 __init_array_start

140: 0001425c     0 OBJECT  LOCAL  HIDDEN   20 _DYNAMIC

141: 000094fc     0 NOTYPE  LOCAL  DEFAULT   11 $a

142: 0000950c     0 NOTYPE  LOCAL  DEFAULT   11 $d

143: 00009510     0 NOTYPE  LOCAL  DEFAULT   11 $a

144: 00014568     0 NOTYPE  WEAK   DEFAULT   22 data_start

145: 00009510     0 FUNC    GLOBAL DEFAULT  UND

146: 0000951c     0 FUNC    GLOBAL DEFAULT  UND glEnable

147: 00015598     4 OBJECT  GLOBAL DEFAULT   23 mesh

148: 00009528     0 FUNC    GLOBAL DEFAULT  UND glTexCoordPointer

149: 00009534     0 FUNC    GLOBAL DEFAULT  UND

150: 0000b42c   408 FUNC    GLOBAL DEFAULT   12 _Z8InitGLESv

151: 00009540     0 FUNC    GLOBAL DEFAULT  UND _Znaj

152: 0000be78     4 FUNC    GLOBAL DEFAULT   12 __libc_csu_fini

153: 000155a8     4 OBJECT  GLOBAL DEFAULT   23 texture

154: 0000954c     0 FUNC    GLOBAL DEFAULT  UND

155: 00009894     0 FUNC    GLOBAL DEFAULT   12 _start

156: 0000a1e4   328 FUNC    GLOBAL DEFAULT   12 _ZN4Mesh4DrawEv

157: 0000bde0    24 FUNC    GLOBAL DEFAULT   12 _ZN5TimerC1Ev

158: 00009558     0 FUNC    GLOBAL DEFAULT  UND _

159: 00009564     0 FUNC    GLOBAL DEFAULT  UND glEnableClientState

160: 00000000     0 FUNC    GLOBAL DEFAULT  UND

161: 00009570     0 FUNC    GLOBAL DEFAULT  UND _ZdaPv

162: 0000957c     0 FUNC    GLOBAL DEFAULT  UND

163: 00009588     0 FUNC    GLOBAL DEFAULT  UND glMatrixMode

164: 00000000     0 NOTYPE  WEAK   DEFAULT  UND __gmon_start__

165: 00000000     0 NOTYPE  WEAK   DEFAULT  UND _Jv_RegisterClasses

166: 000095a0     0 FUNC    GLOBAL DEFAULT  UND glDisable

167: 000095ac     0 FUNC    GLOBAL DEFAULT  UND glClear

168: 000095b8     0 FUNC    GLOBAL DEFAULT  UND

169: 000095c4     0 FUNC    GLOBAL DEFAULT  UND

170: 00014570     4 OBJECT  GLOBAL DEFAULT   22 width

171: 00009f5c   524 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFont5PrintE

172: 000095d0     0 FUNC    GLOBAL DEFAULT  UND

173: 0000bf48     0 FUNC    GLOBAL DEFAULT   13 _fini

174: 000095dc     0 FUNC    GLOBAL DEFAULT  UND glOrthox

175: 000095e8     0 FUNC    GLOBAL DEFAULT  UND glColor4x

176: 000095f4     0 FUNC    GLOBAL DEFAULT  UND glGetError

177: 00009600     0 FUNC    GLOBAL DEFAULT  UND hi_egl_getdisp

178: 0000960c     0 FUNC    GLOBAL DEFAULT  UND

179: 00009618     0 FUNC    GLOBAL DEFAULT  UND glClearColorx

180: 00014574     4 OBJECT  GLOBAL DEFAULT   22 height

181: 00009624     0 FUNC    GLOBAL DEFAULT  UND _ZdlPv

182: 0001559c     4 OBJECT  GLOBAL DEFAULT   23 font

183: 00009630     0 FUNC    GLOBAL DEFAULT  UND eglQuerySurface

184: 0000963c     0 FUNC    GLOBAL DEFAULT  UND glLoadIdentity

185: 0000a1a0    68 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFont12Enabl

186: 00014580     4 OBJECT  GLOBAL DEFAULT   23 x

187: 0000b85c   148 FUNC    GLOBAL DEFAULT   12 _ZN7Texture7LoadRawEPKcPP

188: 00009648     0 FUNC    GLOBAL DEFAULT  UND glDeleteBuffers

189: 00009f54     4 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFontD2Ev

190: 00009654     0 FUNC    GLOBAL DEFAULT  UND

191: 00009660     0 FUNC    GLOBAL DEFAULT  UND

192: 0000bf50     4 OBJECT  GLOBAL DEFAULT   14 _IO_stdin_used

193: 0000966c     0 FUNC    GLOBAL DEFAULT  UND glShadeModel

194: 00014568     0 NOTYPE  GLOBAL DEFAULT   22 __data_start

195: 00009678     0 FUNC    GLOBAL DEFAULT  UND hi_egl_swap

196: 00009684     0 FUNC    GLOBAL DEFAULT  UND

197: 00009690     0 FUNC    GLOBAL DEFAULT  UND glBufferData

198: 0000969c     0 FUNC    GLOBAL DEFAULT  UND

199: 000096a8     0 FUNC    GLOBAL DEFAULT  UND BCMUtil_Audio_Destroy

200: 000096b4     0 FUNC    GLOBAL DEFAULT  UND glNormalPointer

201: 0000b1d4   200 FUNC    GLOBAL DEFAULT   12 _Z9CleanGLESv

202: 000096c0     0 FUNC    GLOBAL DEFAULT  UND __gxx_personality_v0

203: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start__

204: 0000b29c   400 FUNC    GLOBAL DEFAULT   12 _Z6Renderv

205: 000096cc     0 FUNC    GLOBAL DEFAULT  UND glBlendFunc

206: 00009940   604 FUNC    GLOBAL DEFAULT   12 _Z16ParseCommandLineiPPc

207: 000096d8     0 FUNC    GLOBAL DEFAULT  UND

208: 0000bb78   592 FUNC    GLOBAL DEFAULT   12 _ZN7TextureC2EPKcjjjjiii

209: 000096e4     0 FUNC    GLOBAL DEFAULT  UND glBindTexture

210: 000096f0     0 FUNC    GLOBAL DEFAULT  UND glTexParameterx

211: 00014588     4 OBJECT  GLOBAL DEFAULT   23 sampling

212: 000096fc     0 FUNC    GLOBAL DEFAULT  UND

213: 0001458c     4 OBJECT  GLOBAL DEFAULT   23 iNum

214: 00009708     0 FUNC    GLOBAL DEFAULT  UND glTranslatef

215: 00014584     4 OBJECT  GLOBAL DEFAULT   23 y

216: 00009714     0 FUNC    GLOBAL DEFAULT  UND glDeleteTextures

217: 0001456c     0 OBJECT  GLOBAL HIDDEN   22 __dso_handle

218: 00009720     0 FUNC    GLOBAL DEFAULT  UND

219: 0000b668   500 FUNC    GLOBAL DEFAULT   12 _ZN7Texture7LoadTGAEPKcPP

220: 0000972c     0 FUNC    GLOBAL DEFAULT  UND

221: 00009738     0 FUNC    GLOBAL DEFAULT  UND glDisableClientState

222: 00009744     0 FUNC    GLOBAL DEFAULT  UND __cxa_end_cleanup

223: 00009750     0 FUNC    GLOBAL DEFAULT  UND

224: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS __end__

225: 0000bdf8    64 FUNC    GLOBAL DEFAULT   12 _Z8GetTicksv

226: 0000be7c   204 FUNC    GLOBAL DEFAULT   12 __libc_csu_init

227: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_end__

228: 0000975c     0 FUNC    GLOBAL DEFAULT  UND

229: 00009768     0 FUNC    GLOBAL DEFAULT  UND hiLoad2DTexture

230: 00009774     0 FUNC    GLOBAL DEFAULT  UND glFrustumf

231: 00009e4c   264 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFontC1Ejii

232: 0000b094   168 FUNC    GLOBAL DEFAULT   12 _Z14SetPerspectivev

233: 00015590     1 OBJECT  GLOBAL DEFAULT   23 _ZN13BitmappedFont11m_ins

234: 00009780     0 FUNC    GLOBAL DEFAULT  UND hi_egl_getsurface

235: 0000978c     0 FUNC    GLOBAL DEFAULT  UND hi_egl_DeInit

236: 00009798     0 FUNC    GLOBAL DEFAULT  UND glGenBuffers

237: 000097a4     0 FUNC    GLOBAL DEFAULT  UND glDrawElements

238: 00009d44   264 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFontC2Ejii

239: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS __bss_start

240: 0000aa14  1472 FUNC    GLOBAL DEFAULT   12 _ZN4MeshC2EPKcb

241: 000097b0     0 FUNC    GLOBAL DEFAULT  UND glTexImage2D

242: 000097bc     0 FUNC    GLOBAL DEFAULT  UND glRotatef

243: 000097c8     0 FUNC    GLOBAL DEFAULT  UND

244: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS _bss_end__

245: 0000bdc8    24 FUNC    GLOBAL DEFAULT   12 _ZN5TimerC2Ev

246: 00014578     4 OBJECT  GLOBAL DEFAULT   22 frames

247: 0000afd4   192 FUNC    GLOBAL DEFAULT   12 _Z11Perspectiveffff

248: 0000a32c   148 FUNC    GLOBAL DEFAULT   12 _ZN4MeshD1Ev

249: 000097d4     0 FUNC    GLOBAL DEFAULT  UND glDrawArrays

250: 000097e0     0 FUNC    GLOBAL DEFAULT  UND

251: 000097ec     0 FUNC    GLOBAL DEFAULT  UND hi_egl_setup

252: 0000b13c   152 FUNC    GLOBAL DEFAULT   12 _Z10SetOrtho2Dv

253: 00014590  4096 OBJECT  GLOBAL DEFAULT   23 _ZN13BitmappedFont20m_tex

254: 000155a4     4 OBJECT  GLOBAL DEFAULT   23 timer

255: 000097f8     0 FUNC    GLOBAL DEFAULT  UND

256: 0000a3c0   148 FUNC    GLOBAL DEFAULT   12 _ZN4MeshD2Ev

257: 000155ac     0 NOTYPE  GLOBAL DEFAULT  ABS _end

258: 00009804     0 FUNC    GLOBAL DEFAULT  UND glBindBuffer

259: 0000b8f0    28 FUNC    GLOBAL DEFAULT   12 _ZN7TextureD1Ev

260: 0000a168    56 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFont13Disab

261: 00009810     0 FUNC    GLOBAL DEFAULT  UND

262: 0000b5c4   164 FUNC    GLOBAL DEFAULT   12 _ZN7Texture18FlipBitmapVe

263: 0000981c     0 FUNC    GLOBAL DEFAULT  UND glVertexPointer

264: 00009828     0 FUNC    GLOBAL DEFAULT  UND

265: 00009834     0 FUNC    GLOBAL DEFAULT  UND hi_egl_destroy

266: 00009840     0 FUNC    GLOBAL DEFAULT  UND hi_egl_Init

267: 0000984c     0 FUNC    GLOBAL DEFAULT  UND

268: 00009858     0 FUNC    GLOBAL DEFAULT  UND

269: 0001457c     0 NOTYPE  GLOBAL DEFAULT  ABS _edata

270: 0000a454  1472 FUNC    GLOBAL DEFAULT   12 _ZN4MeshC1EPKcb

271: 00009f58     4 FUNC    GLOBAL DEFAULT   12 _ZN13BitmappedFontD1Ev

272: 00009864     0 FUNC    GLOBAL DEFAULT  UND _Znwj

273: 00000000     0 FUNC    GLOBAL DEFAULT  UND

274: 00009870     0 FUNC    GLOBAL DEFAULT  UND BCMUtil_Audio_Init

275: 0000b90c    28 FUNC    GLOBAL DEFAULT   12 _ZN7TextureD2Ev

276: 0000987c     0 FUNC    GLOBAL DEFAULT  UND

277: 000155a0     4 OBJECT  GLOBAL DEFAULT   23 meshTexture

278: 00009888     0 FUNC    GLOBAL DEFAULT  UND glGenTextures

279: 00009b9c   424 FUNC    GLOBAL DEFAULT   12 main

280: 0000be38    64 FUNC    GLOBAL DEFAULT   12 _ZN5Timer11UpdateTimerEv

281: 000094f0     0 FUNC    GLOBAL DEFAULT   10 _init

282: 0000b928   592 FUNC    GLOBAL DEFAULT   12 _ZN7TextureC1EPKcjjjjiii

符号正常。

大小为:29150 byte.

1.3.2:

使用-ffunction-sections,-fdata-sections的动态库,且使用-Wl,--gc-sections.

编译后,大小为28902。

来自http://blog.sina.com.cn/s/blog_602f87700100t0t5.html

linux 编译符号 u,Linux下缩小可执行程序 (一) 非使用符号的去除相关推荐

  1. Linux进程中Dec04什么意思,Linux下缩小可执行程序 (一) 非使用符号的去除

    Sam在程序开发中,经常要用到多层库嵌套. Sam常在想,一些底层库的符号(symbols),在上层库乃至应用程序中并非全部要使用到.如果这些符号(symbols)实现一层层报喊道上一层库中,并最终添 ...

  2. g++ linux 编译开栈_linux下使用g++编译cpp工程

    C++编程中相关文件后缀 1.单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的C++程序的代码: 1 /*helloworld.cpp*/ 2 #includ ...

  3. g++ linux 编译开栈_Linux下编写C++服务器(配置C++编译调试环境)

    Linux下编写C++服务器(配置C++编译调试环境) 安装好linux虚拟机,确定能上网后,我们可以开始编写C++程序了,但在这之前我们需要下载编译器和调试器 下载gcc 1.在终端输入yum se ...

  4. linux编译redis打包,linux下下载redis,并且编译

    1:下载.解压.编译 $ wget http://download.redis.io/releases/redis-3.0.6.tar.gz $ tar xzf redis-3.0.6.tar.gz ...

  5. linux编译ffmepg,在Ubuntu下编译FFmpeg

    在之前,我们成功地使用mingw+msys在Windows平台下编译FFmpeg(见 http://www.linuxidc.com/Linux/2014-11/109839.htm),并生成了ffp ...

  6. ubuntu linux编译apt,Ubuntu Linux系统下apt-get命令详解

    整理了Ubuntu Linux操作系统下apt-get命令的详细说明,分享给大家. 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show pa ...

  7. Linux编译代码卡死,Linux下970Pro编译卡死的问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人小白一个,想请教图吧技术佬一个Linux下多线程编译C++时系统卡死的问题. 先说下家里电脑大体配置:CPU是Ryzen 1600X,显卡是华硕战枭G ...

  8. linux编译ffmpeg.exe,linux下编译FFmpeg

    linux下编译FFmpeg 2020年01月11日 阅读数:12 这篇文章主要向大家介绍linux下编译FFmpeg,主要内容包括基础应用.实用技巧.原理机制等方面,希望对大家有所帮助. 1.首先获 ...

  9. gsoap linux 编译,gSOAP嵌入式linux下的移植与程序开发

    一.移植 1.下载源码 本例下载最新版本为:gsoap_2.8.33.zip 2.解压源码 $ unzip gsoap_2.8.33.zip 3.平台准备unbuntu1204 $sudo apt-g ...

最新文章

  1. cv2.circle函数
  2. mysql 分时统计_mysql中数据统计的技巧备忘录
  3. Setting Expires and Cache-Control: max-age headers for static resources in ASP.NET
  4. OpenShift 4 之脚本化部署Istio的HelloWorld和BookInfo示例
  5. python3 写入excel_python3读取、写入、追加写入excel文件
  6. linux入门命令总结
  7. Smart3D基础理论
  8. 数电基础-数字电路芯片种类
  9. 广义线性模型之泊松回归
  10. sqlite3:sqlite3_column 函数
  11. 实验四+049+尤帆贤
  12. 《期权、期货及其他衍生产品》读书笔记(第三章:利用期货的对冲策略)
  13. Java简史-SUN
  14. Java 和 MySQL 数据类型对照表
  15. 戴维斯双击策略的实现与验证
  16. linux 时间 环境变量,Linux环境变量的修改(永久,暂时)以及修改ls显示的时间格式...
  17. HDU6124 Euler theorem
  18. Facebook创始人
  19. Spyder: You have missing dependencies! #Mandatory: rtree>=0.9.7
  20. 串口公头(九针)母头(九孔)对应接口(转)

热门文章

  1. java 获取当前时间的三种方法是什么
  2. SAP-MM-移动类型解析之收货02--价值评估冻结库存的收货
  3. !!!全球最流行开源硬件平台!不知道就OUT了!
  4. 数据结构:大学的数据统计
  5. 2019届高二(上)12月月考试题(文科)
  6. SpringBoot中MybatisX插件的简单使用教程(超详细!!)
  7. mfc editctrl限制输入
  8. 教师学计算机内容包括哪些,中学计算机教师类论文参考文献 中学计算机教师核心期刊参考文献有哪些...
  9. Clickhouse—时间窗口函数
  10. java图书管理系统目的_java_图书管理系统java版,本文的目的就是通过图书管理 - phpStudy...