码迷,mamicode.com
首页 > 系统相关 > 详细

解决linux .so的链接时符号依赖问题

时间:2014-12-19 15:42:08      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:

问题描述

target: a.out

SO:libmyfile.so

依赖描述

a.out: libmyfile.so

libmyfile.so:  libssl.so.1.0.0

libssl.so.1.0.0: libcrypto.so.1.0.0 

 

由于make参数的问题,表现为在生成a.out的时候,报错myfile.so有引用了未定义符号找不到,而该符号是出现在libcrypto.so.1.0.0中;

可疑方案

指定-L参数,然后分别把ssl,crypto的依赖项以-l参数加入make;编译成功;

疑问:

从依赖关系可见,明明我的生成目标是依赖libmyfile.so的,与libmyfile.so的依赖项的关系应该是透明的。为什么需要加到本层目标的参数项中来; 

正规方法

 仔细检视报错信息会发现,这是ld报错,ld指示可用-rpath指定库加载目录;

因此,我们应该在生成a.out目标时,除了加上libmyfile.so的依赖以及库搜索目录,还应该为ld指定库加载时依赖项的路径;

很简单,把so置于同一目录下,在生成可执行目标时,指定-rpath参数;这样就ld自动搜索依赖项了

解决linux .so的链接时符号依赖问题

标签:

原文地址:http://www.cnblogs.com/qianwen36/p/4173865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!