什么是导出符号?
符号,是软件链接过程的用到的术语。
我们编写自己的软件生成目标文件,通常情况下,只有自己的目标文件是不够的。
比如我们用c++编写的程序,必然要与C++的运行时库链接在一起才能工作,否
则我们在代码中使用的fopen或者std::cout之类的符号要到哪里去找。
在链接的过程中,相当于是让目标文件之间镶嵌到一起,因此最重要的是找到精
确的接入点,这就是符号。
ldd命令:
ldd命令用于输出可执行文件或者库文件所依赖的共享库列表。
nm命令:
nm命令用于输出可执行文件或者库文件的符号表。
readelf命令:
readelf命令用来显示一个或者多个elf格式的目标文件的信息,可以通过它的选项来控制显示哪些信息。
常用的选项:
-s --syms --symbols 显示符号表段中的项(如果有的话)。
-d --dynamic 显示动态段的信息。
ar命令:
ar命令可以用来创建、修改库,也可以从库中提出单个模块。
objdump命令:
objdump命令是用查看目标文件或者可执行的目标文件的构成的gcc工具。
常用选项:
-T --dynamic-syms
显示文件的动态符号表入口,仅仅对动态目标文件意义,比如某些共享库。它显示的信息类似于 nm -D|–dynamic 显示的信息。