gcc/g++编译动态库时,默认所有函数都是导出的,就是在便好的so文件中,能够看到函数表:
$readelf -s libxxx.so
Symbol table '.dynsym' contains 1188 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND
1: 0000000000054898 0 SECTION LOCAL DEFAULT 8
2: 000000000068a838 0 SECTION LOCAL DEFAULT 18
3: 000000000022fe60 172 FUNC GLOBAL DEFAULT 10 unzGetGlobalComment
4: 00000000003169c8 516 FUNC WEAK DEFAULT 10 _ZNSt8_Rb_treeINSt7__cxx1
5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND _Znam@GLIBCXX_3.4 (2)
如上命令 readelf -s 就可以查看到符号表。
gcc/g++编译时默认所有符号表可见,也就是说,我可以调用so库中的任何函数
有时候,我们需要隐藏一些函数&#