首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux编译符号那些事情

2013-09-28 
linux编译符号那些事儿其实符号这个概念,有点底层功底的程序员都应该晓得。其实就是标志的意思。比如说,标志

linux编译符号那些事儿

其实符号这个概念,有点底层功底的程序员都应该晓得。其实就是标志的意思。比如说,标志属性(变量),一个行为(函数)或者其他。

在linux下编译,时间长了,一定会遇到使用【nm】【ldd】【readelf】的时候。linux编译符号那些事情

不扯淡了,直接进入到今天的正题。你跟着这边文章看下来,你应该可以学会下面几点:

1,dlopen可能比-llibrary的编译更靠谱。(我也不知道为什么)

2,dlopen不能打开【还存在未定义符号】的动态库

3,类什么时候会报未定义


好了,我们直接切入主题:工程介绍

1,1.h 1.cpp ==> 1.so

2,main.cpp ===> main(采用动态加载动态库的技术)

代码1.h

#include <dlfcn.h>#include "1.h"int main(){void* module = dlopen("./lib1.so", RTLD_LAZY);if (module == NULL){cout << dlerror() << endl;}return 0;}

编译的时候指定-rdynamic -ldl -fPIC

好啦~
你应该在运行的时候报A这个类符号未定义。


使用nm看看lib1.so吧,发现果然A这个符号是U型的参考http://blog.csdn.net/wusoule/article/details/11770149
到此为止,你应该明白了

2,dlopen不能打开【还存在未定义符号】的动态库

3,类什么时候会报未定义


至于第一点,我弄清楚了再说。




1楼u0119604023天前 14:36
类什么时候会报为定义n=>看了一会才理解是 未定义
Re: wusoule前天 17:28
回复u011960402n修改了

热点排行