Chinaunix首页 | 论坛 | 博客
  • 博客访问: 338106
  • 博文数量: 73
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1293
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-07 11:17
个人简介

爱运动,爱看书,爱生活!

文章分类

全部博文(73)

文章存档

2014年(7)

2013年(66)

分类: C/C++

2013-12-10 18:14:01

    掉坑里好几天了,一直没爬出来,没办法老大过来指点了一下。
情况是程序中的一个类和动态库中的一个类同名,编译以后程序运行过程中崩溃,出现段错误,而且是在连接服务器过程中崩溃,
所以开始是怀疑服务器代码的问题,gdb跟了很久程序是在连接服务器过程中突然退出到自己的代码,导致后续的错误,刚开始还
抱怨服务器太挫,跟到错误之后还是没有想到重名的问题,反而怀疑自己程序逻辑有问题,越陷越深,顿时迷茫............
    经过验证,在linux环境下,如果发生这种同名情况,自己程序中同名的类会覆盖动态库中的,使程序从动态库退出。为避免这种情况:
一是在写代码过程中尽量避免这种同名(很难保证啊),另外一个就是靠编译方法了(稍微靠谱)。
    解决方法:将发生重名的那个动态库编译时加上编译选项:-fvisibility=hidden(使用该选项编译出的.o文件中所有符号均为外部不可访问)。
结果简单,过程曲折,归根结底:1.思考不仔细 2.这方面知识不够 3.经验积累不够
总结:慢慢修炼吧,捶胸顿足是没有用的。
阅读(2062) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~