一个so库中全局变量未定义引起的问题

简介:

libspero.so库中,先是在a.cpp中定义了全局变量m; 在b.cpp中使用extern int m;后使用,后来删了a.cpp中m的定义,忘记删除b.cpp中m的使用了,结果libspero.so编译没有任何报警,运行后总是crash,跟踪后发先GOT表项中保存的值是非法内存访问区! 这个报错表面上看起来跟b.cpp没有任何关系,调了一天,巨坑巨坑!


本文转自 zhegaozhouji 51CTO博客,原文链接:http://blog.51cto.com/1038741/1947292

相关文章
|
存储 Shell 编译器
makefile 变量赋值方式
makefile 变量赋值方式
95 1
|
编译器
引用头文件的操作
引用头文件的操作。
44 0
|
6月前
|
存储 编译器 C语言
Makefile变量的引用与赋值
Makefile变量的引用与赋值
96 0
|
IDE Java 开发工具
JavaLaunchHelper类在…libinstrument.dylib中都实现将使用两者之一哪一个未定义
JavaLaunchHelper类在…libinstrument.dylib中都实现将使用两者之一哪一个未定义
100 0
编译lua5.3.5报错:libreadline.so存在多处未定义的引用
编译lua5.3.5报错:libreadline.so存在多处未定义的引用
105 0
|
C语言
gcc编译时传递宏定义
gcc编译时传递宏定义
270 0
编译的作用域
编译的作用域
59 0
解决办法:对uncompress未定义的引用
解决办法:对uncompress未定义的引用
188 0