linux系统下静态库及动态库的生成及使用方法

2 篇文章 0 订阅

1.创建myAPI.h文件

内容如下:

int ADD(int a,int b);
int MINUS(int a,int b);

2.创建myAPI.cpp文件

#include"myAPI.h"
int ADD(int a,int b){
return a + b;
}
int MINUS(int a,int b){
return a - b;}

3.创建main.cpp文件

#include "myAPI.h"
#include<iostream>
int main(){
        std::cout<<"1 + 1="<<ADD(1,1)<<std::endl;
        std::cout<<"1 - 1="<<MINUS(1,1)<<std::endl;
        return 0;
}

接下来先生成静态库,linux下生成静态库的命令为 ar crv libxxxxx.a  xxxxx.o;即ar crv libmyAPI.a myAPI.o则会生成libmyAPI.a文件,静态库生成完毕。执行命令g++ main.cpp libmyAPI.a -o output 然后执行命令./output,出现结果:

1 + 1=2
1 - 1=0

动态库的生成:linux下生成动态库的命令为 g++ -shared -fPIC -o libxxx.so xxx.o 在本例中为

g++ -shared -fPIC -o libmyAPI.so myAPI.o

查看文件夹会出现libmyAPI.so文件,即相当于windows的dll文件。

执行命令:g++ main.cpp -L. -lmyAPI -o output

”-L.”标记告诉G++函数库可能位于当前目录;使用”-lmyAPI”标记来告诉G++驱动程序在连接阶段引用共享函数库libmyAPI.so。

接下来执行./output

如果出现./output: error while loading shared libraries: libmyAPI.so: cannot open shared object file: No such file or directory

没关系,说明你的so文件位置不对,执行命令sudo mv libmyAPI.so /usr/lib将so文件放到/usr/lib下面即可

再次回车,可出现正确结果。

1 + 1=2
1 - 1=0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值