gcc
ar
AR命令可以对一个或者多个目标文件.o进行归档, 形成一个静态库.a文件。
命令格式
ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files
选项
{dmpqrtx}
中的操作选项在命令中只能并且必须使用其中一个
- d 从库中删除模块。按模块原来的文件名指定要删除的模块
- q 快速追加,增加新模块到库的结尾处
- r 在库中替换同名的模块
- p 显示库中指定的成员到标准输出
- t 显示库的模块表清单。一般只显示模块名
- x 从库中提取一个成员。如果不指定要提取的模块,则提取库中所有的模块。
[abcfilNoPsSuvV] 可以结合使用
- a
- c
- s
####### 示例
- ar rcs [目标文件...]
把目标文件转归档为静态库文件 - ar -vt [静态库文件]
查看静态库中有哪些文件 - ar -x [静态库文件]
将静态库中的目标文件解压出来,放在当前目录下。
ldd
打印动态库依赖
image.png
file
显示文件类型
size
列出 objfile 中各节的大小
image.png
nm
用来列出 objfile 中的符号。
-
nm 中各个常见符号分类意义
A
-
B/b
The symbol is in the BSS data section -
D/d
The symbol is in the initialized data section -
T/t
The symbol is in the text (code) section -
U
The symbol is undefined.
-
将文件中的符号属于各个文件打印出来
nm -A [objfile]
-
展示 objfile 中未被demangle的符号名称
nm -C [objfile]
-
将符号的行号输出来
需要调试信息,编译时添加-g
选项。nm -l [objfile]
readelf
-s
objdump
- a 列举.a文件中的所有目标文件
- C 对于C++ 符号名进行反修饰
- d 对包含机器指令的段进行反汇编
- h 显示段表
- t 显示文件中的符号表,-T 显示动态链接符号表
- r 显示重定位信息,-R 显示动态链接重定位信息
addr2line
addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。
一般适用于 debug 版本或带有 symbol 信息的库。
网友评论