编译生成和使用动态库之一

  • 动态
  • 蓝蓝的天
  • LV5工程师
  • |      2016-07-05 09:54:44
  • 浏览量 492
  • 回复:0
本帖最后由 蓝蓝的天 于 2016-7-5 10:05 编辑 首先,我们来编译并生成一个动态库: 代码如下: 编译生成动态库与编译普通的可执行文件略有不同。 编译: 其中多了一个-shared选项,该选项用于指示gcc生成动态库。 然后再编写一个简单例子,来使用这个动态库,代码如下: 下面我们利用前面的动态库来生成最终的可执行文件 其中-l用于指示生成文件依赖的库,-L用于指示gcc在哪个目录中查找依赖的库文件。 让我们运行这个test_dlib看看结果如何: 为什么会报告出错,找不到这个libdlib.so呢?前面明明已经使用-L指定了库文件 在当前目录中,并且这个库文件也确实存在于当前目录中啊。这是怎么回事呢? 让我们使用ldd来查看test_lib的依赖库,如下: 确实显示无法找到libdlib.so。原因在于-L只是在gcc编译的过程中指示库的位置, 而在程序运行的时候,动态库的加载路径默认为/lib和/usr/lib。 我们现在将libdlib复制到/usr/lib目录下,再运行test_dlib试试。 现在./test_dlib顺利执行了,并成功调用了动态库中的dynamic_lib_call函数。
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子