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

Linux动态库多重依赖

时间:2018-06-07 14:20:51      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:依赖   技术分享   输入   多重   pre   清除   http   com   int   

1、动态库依赖关系

test->hello->world

2、源文件

//world.cpp
#include <stdio.h>

void world(void)
{
    printf("world.\n");
}
//hello.cpp
#include <stdio.h>

void world(void);

void hello(void)
{
    printf("hello\n");
    world();
}
//test.cpp

void hello(void);

int main(void)
{
    hello();
    return 0;
}

 3、编译

(1)编译word动态库

g++ -shared -fPIC world.cpp -o libworld.so

(2)编译hello动态库

g++ -shared -fPIC hello.cpp -o libhello.so

ldd libhello.so

查看libhello.so的依赖库,没有看到依赖libword.so

技术分享图片

g++ -shared -fPIC hello.cpp -o libhello.so -L ./ -lworld

ldd libhello.so

再次查看libhello.so的依赖库,看到了依赖库libword.so

技术分享图片

上图显示libworld.so not found,如果临时增加链接动态库的路径,输入如下命令

export LD_LIBRARY_PATH=./

ldd libhello.so

查看libhello.so的依赖库,显示了依赖库libword.so的路径

技术分享图片

先清除链接动态库路径

export LD_LIBRARY_PATH=

(3)编译可执行文件test

g++ test.cpp -o a.out -L ./ -lhello

提示找不到libhello.so的依赖库libworld.so,即使编译libhello.so时已经指定了libworld.so,这点和windows不一样

技术分享图片

g++ test.cpp -o a.out -L ./ -lhello -lworld -Wl,-rpath ./

编译通过,得到可执行文件a.out,运行成功

Linux动态库多重依赖

标签:依赖   技术分享   输入   多重   pre   清除   http   com   int   

原文地址:https://www.cnblogs.com/justkong/p/9149006.html

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