【IT专家】linux 编译动态库(共享库 .so)的方法;和make 的命令行使用达到动态库连接编译

  • 格式:pdf
  • 大小:268.74 KB
  • 文档页数:4

本文由我司收集整编,推荐下载,如有疑问,请与我司联系linux 编译动态库(共享库.so)的方法;和make 的命令行使用达到
动态库连接编译
2015/04/16 293 [root@kuenking 桌面]# gcc -c -fpic d1.c [root@kuenking 桌面]# gcc -c -fpic d2.c //编译动态库的方法[root@kuenking 桌面]# gcc -shared -olibdemo4.so d1.o d2.o //连接动态库[root@kuenking 桌面]# gcc main.c -ldemo4 -L. -omain //使用动态库的方法,需要demo4库名:-l库名-L库所在地(.意思是当前目录)[root@kuenking 桌面]# ldd mainlinux-gate.so.1 = (0x00303000)libdemo4.so (0x006e1000)libc.so.6 = /lib/libc.so.6 (0x00727000) /lib/ld-linux.so.2 (0x00701000)
 [root@kuenking 桌面]# ./main 10 [root@kuenking 桌面]#
 ¥¥¥¥¥:d1.c 和d2.c 是两个文件且没有main函数。

 问题:
 1:执行程序怎么加载动态库?
 首先,必须能够找到动态库,然后加载动态库到内存,然后再映射到用户的内存空间(后面的是系统来完成,我们只需要确保可以让其找到动态库,)。

 系统对动态库的查找规则:
 a: /lib
 b: /usr/lib
 c:到环境变量LD_LIBRARY_PATH指定的路径。

eg: export LD_LIBRARY_PATH=. (.代表当前目录)
 2:动态库没有作为执行程序的一部分,为连接需要他?
 连接器需要确定函数在动态库中的位置;
 例子:。