我们知道, 在C++中, 是允许函数重载的, 也就引出了编译器的name mangling机制, 今天我们要介绍的c++filt命令便与此有关。

对于从事linux开发的人来说, 不可不知道c++filt命令的使用。

在linux开发中, 如果要调用基础模块库, 就要包含对应的头文件, 并在makefile中指定头文件路径和对应的库。

之前我们说过了:

1. 如果没有指定对应的头文件, 则编译会报错, 提示找不到头文件。

2. 如果指定了库路径, 但实际没有库, 则会报找不错库文件的错误。

3. 如果没有指定库路径(因各种原因啦), 则编译不会报错, 运行的时候才会报错, 提示dlopen失败。

针对3中的问题, 我们之前也说过, 完全不用等到运行阶段才去发现问题, 我们可以在编译出so库后, 用ldd -r命令来找出undefined的函数名(当然也可以用nm命令), 比如用ldd -r test.so查出缺少_ZNK4Json5ValueixEPKc(这就是name mangling后的函数名), 那怎么知道这个name mangling后的名字的原函数名称呢?  我们可以大致猜测, 但这并不靠谱, 怎么办呢?c++file命令就是专门干这个的, 如下:

[plain] view plaincopy
  1. [taoge@localhost test]$ c++filt _ZNK4Json5ValueixEPKc
  2. Json::Value::operator[](char const*) const

这样, 就更清楚是哪个函数了。 然后就可以在工程中搜索了, 然后就可以找到对应的库了, 然后就可以修改makefile来指定库了, 酱紫就解决问题了

就这样。

后记: 我之前一直想找到一个从name mangling后的名字来找原函数的方法

linux下的c++filt 命令相关推荐

  1. linux下的c++filt命令

    一个简单的linux命令,确实不值得大费周折,但是如果能与实际开发工作联系起来,解决实际开发中的困惑,在生动的实际场景中学习命令,那无疑是棒棒哒的感觉. 最近刚好用c++filt解决了相关实际问题,故 ...

  2. Linux下,各种解压缩命令集合

    Linux下,各种解压缩命令集合 tar xvfj lichuanhua.tar.bz2 tar xvfz lichuanhua.tar.gz tar xvfz lichuanhua.tgz tar  ...

  3. Linux下su与su -命令的区别

    Linux下su与su -命令的区别 在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命 ...

  4. linux下软件编译终止,[2018年最新整理]linux下编译运行程序命令大全.ppt

    [2018年最新整理]linux下编译运行程序命令大全 1. 项目课题引入 2. Vi编辑器的使用方法 3. Linux中C语言程序的编辑 4. Linux中C语言程序的运行 5. 现场演示案例 课题 ...

  5. 在linux下的使用复制命令cp,不让出现“overwrite”(文件覆盖)提示的方法。

    2019独角兽企业重金招聘Python工程师标准>>> 在linux下的使用复制命令cp,不让出现"overwrite"(文件覆盖)提示的方法. 一般我们在使用c ...

  6. 在Linux下怎样让top命令启动之后就按内存使用排序(或CPU使用排序)?

    在Linux下怎样让top命令启动之后就按内存使用排序(或CPU使用排序)? top 命令的参数中没有方法可以直接做到. man top 写道 NAME        top - display Li ...

  7. Linux 下的格式化输出命令:print

    原文链接:http://blog.csdn.net/zgf19930504/article/details/51912765 printf 是linux 下的格式化输出命令,有点儿类似于python ...

  8. linux下常用的关机命令有:shutdown、halt、poweroff、init;重启命令有:reboot。下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法。

    linux下常用的关机命令有:shutdown.halt.poweroff.init:重启命令有:reboot.下面本文就主要介绍一些常用的关机命令以及各种关机命令之间的区别和具体用法. 原创未通过审 ...

  9. Linux下Crontab定时执行命令

    Linux下Crontab定时执行命令 目录 Crontab概述及安装 Crontab规则 常见例子 1. Crontab概述及安装 1. Crontab指令是Linux下执行定时任务的一个命令. 2 ...

  10. linux查代替命令,Linux下查/删/替 命令(转)

    ▪查看某目录下所有文件的个数: [root@localhost1 opt]# ls -l |grep "^-"|wc -l ▪查看某目录下所有文件的个数,包括子目录里面的: [ro ...

最新文章

  1. mysql中usage是什么权限?
  2. SQL--(MyBatis 实战)
  3. 多迪技术总监揭秘:普通UI设计师与顶级UI设计师的区别是什么?
  4. JAVA简性_Java简介
  5. 二零一三年计算机视觉代码合集
  6. 如何下载python安装包的所有依赖_如何将包含所有依赖项的python包安装到Docker镜像中?...
  7. OJ1039: n个数求和(C语言for循环)
  8. win10安装misql8_Windows10下安装MySQL8.0
  9. localdb 安装_如何安装Microsoft SQL Server Express LocalDB
  10. 9月22日云栖精选夜读:脑洞 | 横扫围棋界的AlphaGo竟然出纪录片了!介意剧透者慎点…...
  11. 微信小程序 选择微信自带的地址 用户授权选择了拒绝
  12. 线性变换与矩阵的一一映射
  13. linux系统分区磁盘,Linux 操作系统手动磁盘分区详细说明
  14. 华罗庚黄金分割优选法
  15. 搜狗输入法关闭快捷键设置
  16. 详细解释JavaScript中三元表达式
  17. 八大算法实现(Java)
  18. SpringBoot的幕后推手,java互联网架构师系统vip课程
  19. java学习笔记(22)java输入标签,单选框,复选框,添加文件,文本域,下拉框
  20. Doom流量回放工具导致的测试环境服务接口无响应的排查过程

热门文章

  1. [基础]tfcenter搭建个人服务器
  2. 【定时自动清理磁盘空间】
  3. 虫师带你入门Chrome Headless,从此爬虫0门槛!
  4. 我的2021 年终总结
  5. B站视频下载器推荐(简单又好用)
  6. outlook 您的组织策略阻止我们为您完成此操作
  7. html中body写什么,HTML中body内常用标签
  8. ddr4 dqs 频率_一张图看懂如何选择DDR4内存频率和容量
  9. 【征文通知】PRCV 2021 论文征集
  10. imput placeholder 移动端不居中问题