博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态库的创建与使用
阅读量:5855 次
发布时间:2019-06-19

本文共 1037 字,大约阅读时间需要 3 分钟。

1、动态库文件的创建

     (1)编写源文件

     (2)编译生成动态库

              g++  -fPIC  -shared  -o  libfile_operation.so  file_operation.cpp

              此编译过程分为两步,等同于下面的两个命令:

              g++  -c  -fPIC  file_operation.cpp  

              -fPIC是编译选项,PIC是Position  Independent  Code的缩写,表示要生成位置无关的代码,这是动态库的特性

              g++  -shared  -o  libfile_operation.so  file_operation.o

              -shared是链接选项,告诉g++生成动态库

 

2、编译链接动态库生成可执行文件

         g++  main.cpp  -L.  -lfile_operation

        -L指定搜索库的路径

        -l指定链接的库名称

   

 

       运行可执行文件

      上图可以看到,可执行文件执行时出错,原因是找不到动态库。

       Linux中,执行需要链接动态库的可执行文件时,是通过/etc/ld.so.cache文件搜索要链接的动态库的。而/etc/ld.so.cache是ldconfig程序读取/etc/ld.so.conf文件生成的(此文件中没有/lib和/usr/lib路径,ldconfig程序会默认搜索这两个路径)。

解决此问题有四种方法:

(1)将动态库所在路径添加到/etc/ld.so.conf中,然后以root权限执行以下ldconfig程序,这样就更新了/etc/ld.so.cache文件

(2)执行a.out时,通过LD_LIBRARY_PATH环境变量告诉a.out先在当前路径寻找链接的动态库,执行如下:

         LD_LIBRARY_PATH=. ./a.out

         或者先通过如下命令来添加动态库路径到环境变量,再直接执行./a.out

         export  LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/test (这种设置环境变量的方式,当退出当前终端时就会失效)。

(3)将动态库放到默认搜索的路径中,/lib或者/usr/lib

(4)在生成可执行文件时就告诉它在指定的路径找动态链接库,通过-Wl, -rpath命令,例如:g++ main.cpp -L. -lfile_operation -Wl,-rpath=/home/test

转载于:https://www.cnblogs.com/fangyan5218/p/10618307.html

你可能感兴趣的文章
python 列表递归嵌套 输出列表内容
查看>>
2019 年,容器技术生态会发生些什么?
查看>>
jdk源码之ConCurrentHashMap源码注释
查看>>
在 PowerPC 下安装 K8S
查看>>
实现了读写分离的web工程
查看>>
HTML----列表
查看>>
笔记_网络单位换算
查看>>
百度上线新算法-绿萝算法
查看>>
SIEM期待实时安全分析
查看>>
SANS:2018年度事件响应调查报告
查看>>
利用百度翻译API做的在线翻译(python)
查看>>
php+ajax+json实现分页
查看>>
ios文件操作
查看>>
HTML5 之美:推荐9款优秀的 HTML5 音乐播放器
查看>>
SCDPM2012 R2实战一:基于SQL 2008 R2集群的SCDPM2012 R2的安装
查看>>
C语言打印100 ——200之间的素数
查看>>
tomcat7 的server.xml 里面 Connector 配置官方说明
查看>>
安装Ruby2.0
查看>>
SQL SERVER中字段类型与C#数据类型的对应关系
查看>>
StringBuffer
查看>>