Linux 命令(2)—— C++filt 命令

文章目录

    • 一、命令简介
    • 二、使用方法
    • 三、命令选项
    • 四、常用示例

一、命令简介

C++filt 命令用来解析C++、JAVA符号。比如由于重载,编译器生成的不同符号。

二、使用方法

c++filt [-option] 符号名      ##	如果未指定符号名,默认从标准输入中读取。

三、命令选项

-_, --strip-underscore
	在某些系统中,C和C++编译器都在每个名字前面加下划线。例如,C 名称 foo 获得低级名称为 _foo。此选项用于删除初始下划线,c++filt 是否默认删除下划线是依赖于目标的
-n, --no-strip-underscore
	不删除初始下划线
-p, --no-params
	当解析函数名时,不显示函数参数的类型
-t, --types
	试图解析类型与函数名
-i, --no-verbose
	输出结果中不包括任何实现细节
-s, --format=FORMAT
	c++filt 可以解析不同编译器修饰的符号,此选项用于指明符号修饰所采用的方法:
	"auto":根据可执行文件自动选择符号解析方法,此为默认选项
	"gnu": GNU C++ compiler (g++)的符号修饰方法
	"lucid": Lucid compiler (lcc)的符号修饰方法
	"arm":C++ Annotated Reference Manual 指明的方法
	"hp":HP compiler (aCC)的符号修饰方法
	"edg":EDG compiler 的符号修饰方法
	"gnu-v3":GNU C++ compiler (g++) with the V3 ABI 的符号修饰方法
	"java":GNU Java compiler (gcj)的符号修饰方法
	"gnat":GNU Ada compiler (GNAT) 的符号修饰方法
--help
	显示帮助信息
--version
	显示版本信息
@FILE
	从文件 FILE 中读取命令行选项,读取的选项将插入到 @FILE 选项的位置。如果文件不存在,或者无法读取,那么选项 @FILE 将被按照字面意义处理,而不是被忽略

四、常用示例

## 1、编译时,动态库有中定义符号信息,查看符号原型
ldd -r ./gift_logic.so 
...
undefined symbol: _ZN5tbase4tlog5CTLog5log_iEiiPKcz	(./gift_logic.so)

c++filt  _ZN5tbase4tlog5CTLog5log_iEiiPKcz
tbase::tlog::CTLog::log_i(int, int, char const*, ...)

你可能感兴趣的:(linux,命令,c++filt,linux命令)