Linux 链接库编译与多重依赖

现有如下问题:

我们在第三方动态库(比如 boost 库)的基础上,开发了自己的动态库供公司内部项目使用。在使用自己的这个动态库的时候,该如何进行编译呢?即,依赖链条是这样的情况下:

程序–(依赖)–>libA.so–(依赖)–>libB.so

该如何进行编译。

为了研究这个问题,我们建立一个目录结构,写几个简单程序来模拟一下。以下内容将从构建动态库开始,一步步展示如何达成我们的目标。

建立试验目录结构、程序

目录结构

learn
|
|--main.cpp
|
|--upperLayer
|    |--uLayer.h
|    |--uLayer.cpp
|
|--bottomLayer
     |--bLayer.h
     |--bLayer.cpp

我们将在这个目录下,生成 libblayer.so, libulayer.so, main(可执行文件),其依赖链条是:

main–>libulayer.so–>libblayer.so

特别的,对于 main 的编译来说,其编译参数无需指定 libblayer.so,它只需关心自己直接依赖的 libulayer.so 即可(当然,由于 libulayer.so 依赖 libblayer.so,系统中必须安装 libblayer.so)。

程序

bottomLayer/bLayer.h

#ifndef B_LAYER_H
#define B_LAYER_H

int addOne(int n);

#endif

bottomLayer/bLayer.cpp

#include "bLayer.h"

int addOne(int n)
{
    return n + 1;
}

upperLayer/uLayer.h

#ifndef U_LAYER_H
#define U_LAYER_H

int needAddOne(int n);

#endif

upperLayer/uLayer.cpp

#include "uLayer.h"
#include "../bottomLayer/bLayer.h"

int needAddOne(int n)
{
    return addOne(n);
}

main.cpp

#include "upperLayer/uLayer.h"
#inc
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值