Linux下的C++编程(2)——动态库

为什么要使用动态库?

在实际工作工作,常常需要给予其他人自己的库文件,但是,我们只想让其他人使用我们的库文件,而不想让其他人知道我们具体代码,所以就引入了动态库的概念,使用动态库可以让使用者正常使用我们的库,但是却不知道我们库里面的具体代码细节。

实战举例

首先在/root目录下创建一个test文件

创建两个文件:一个是app,一个是tools。

在app里面创建一个demo01.cpp文件,代码如下:

#include "/root/test/tools/public.h"
using namespace std;
int main(){
    func();
    AA a;
    a.show();
}

在tools里面创建一个public.cpp和public.h文件。

public.h文件如下:

#include <iostream>
void func();
class AA
{
public:
void show();
};

public.cpp文件如下:

#include "public.h"
using namespace std;
void func(){
    cout <<"调用了func()函数\n"<<endl;
}

void AA::show(){
    cout <<"我是一只傻傻鸟\n"<<endl;
}

编译

如果是在VS studio里面的话,直接点击编译即可,但是我们是在Vs code里面写代码,然后在Linux下面编译,用命令进行编译,这的确有点麻烦哦。

第一步:创建动态库

首先进入存放public.cpp的路径,将public.cpp制作成动态库,.h文件不需要制作成动态库。

g++ -fPIC -shared -o libpublic.so public.cpp

-fPIC -shared表示制作动态库

libpublic.so表示动态库的文件名,命名规则是lib+源文件名,后缀是.so

public.cpp表示源文件名

第二步:编译主函数

进入存放demo01.cpp的目录

输入命令:

g++ -o demo01 demo01.cpp -L/root/test/tools -lpublic

  demo01:表示可执行文件名字

demo01.cpp:表示第一个库文件名字

-L/root/test/tools -lpublic:表示动态库文件,其中-L表示指定目录,-l表示动态库文件的名字,这里不需要加lib了,直接源文件名即可,后缀也不需要了。

第三步:设置环境变量

在编译完第二步的命令后,居然报了个错误,说是没指定位置。

 原来使用动态库必须指定环境变量,这个问题不大,以后都是一样的套路。

第一步:输入命令

 echo $LD_LIBRARY_PATH

 这里无论显示不显示都没问题。 

 第二步:输入命令

 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/test/tools

 /root/test/tools:表示动态库文件的存放地址。其实也就是public.cpp的地址,记住,除了主函数文件放在app里面外,其余的库文件都放在tools里面

第三步:再次编译

 g++ -o demo01 demo01.cpp -L/root/test/tools -lpublic

./demo01 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值