博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux动态库编译多重依赖,Linux动态库多重依赖
阅读量:4678 次
发布时间:2019-06-09

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

1、动态库依赖关系

test->hello->world

2、源文件

//world.cpp

#include

void world(void)

{

printf("world.\n");

}

//hello.cpp

#include

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

091f61f32b4af277bcb1e20acc238ad1.png

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

ldd libhello.so

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

3e8aaf9b8038e534922dbc2d7b7f949e.png

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

export LD_LIBRARY_PATH=./

ldd libhello.so

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

b2270b078f980f6ee29b077735f66d94.png

先清除链接动态库路径

export LD_LIBRARY_PATH=

(3)编译可执行文件test

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

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

b9e2791a37879ee63574cbab0a33a94d.png

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

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

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

你可能感兴趣的文章
spring 集成shiro 之 自定义过滤器
查看>>
python 中对list去重
查看>>
Mono Libgdiplus库
查看>>
c语言基础知识要点
查看>>
node启动时, listen EADDRINUSE 报错;
查看>>
杭电3466————DP之01背包(对状态转移方程的更新理解)
查看>>
NABCD
查看>>
ZOJ 2850 Beautiful Meadow (简单题)
查看>>
Android开源框架ImageLoader的完美例子
查看>>
LeetCode - Best Time to Buy and Sell Stock
查看>>
java-Coculator
查看>>
499 单词计数 (Map Reduce版本)
查看>>
python笔记
查看>>
昨天用的流量有点多60M
查看>>
kafka中的消费组
查看>>
Golang的channel使用以及并发同步技巧
查看>>
【JDK源码分析】 String.join()方法解析
查看>>
【SICP练习】112 练习3.28
查看>>
python--注释
查看>>
前端资源链接 ...
查看>>