linux mysql 静态库_linux中建立自己的静态库 动态库并使用

库依赖:

gcc connect.c –o connect –I/usr/include/mysql –L /usr/lib/mysql -lmysqlclient

//-I是找到自己写的头文件所在的位置 -L是找到自己所写的动态库所在的位置,并且写上函数名,静态库不用写-L,只写函数名//-I 是i 的大写

先编译一边,会发现报错,然后解析一下,没有包含头文件

添加上头文件-I /usr/local/include/mysql后,在编一下,发现还有函数没有识别出来,是因为没有包含相应的库文件。

然后将库文件添加上以后,在进行编译发现问题搞定了

这些操作都是在test的文件夹下做的,如果不是的话,用-I 和-L -I来找到头文件的的位置,-L和动态库的位置,

//在test的文件夹下有 main.c xiangjia.c xianjian.c xiangjia.h xiangjian.h//都是自己写的

main.c中

#include //正常写法#include"mymath.h"//自己定义的

intmain()

{int t=xiangjia(65,4);int z=xiangjian(45,2);

printf("%d %d\n",t,z);return 0;

}

xiangjia.c中

int xiangjia(int a,intb)

{return a+b:

}

xiangjian.c中

int xiangjian.(int a,intb)

{return a-b;

}

mymath.h中

#ifndef MYMATH_H //如果没有定义这个头文件

#define MYMATH_H //那么定这个

int xiangjian(int a,int b);//xxx.c中的函数的声明

int xiangjia(int a,intb);#endif

静态操作

[root@localhost test]# gcc -c main.c xiangjia.c xiangjian.c //然后对所有的.c文件进行转换,变成.o目标文件

[root@localhost test]# ar cr libmylib.a xiangjian.o xiangjia.o //然后用ar cr 对.o文件进行操作,转换成静态库,并起个名字,格式:libxxxx.a

[root@localhost test]# gcc -o mylib main.o libmylib.a //然后,使用-o对main.o 和已经生成的静态库libxxxxx.a重命名,

[root@localhost test]# ./mylib //然后找到重命名的文件进行测试,运行 :/找到路径/名字

110

20

动态操作

[root@localhost test]# gcc -shared -fPCI -o libmyname.so xiangjian.o xiangjia.o //使用这个命令,对静态所生成的函数目标文件,进行重命名,格式:libxxxxx.so

[root@localhost test]# cp -r libmyname.so /lib //然后复制所生成的libxxxxx.so即动态文件到 /lib文件夹下

[root@localhost Desktop]# gcc -o mymath ./test/main.c -L /lib/ -lmyname //然后对/路径/main.c 重命名 为 xxxxxx(mymath),并使用-L 找到/lib/ -lxxxx(即libxxxxx.so的缩写),添加这个路径

[root@localhost Desktop]# ./mymath

110

20

[root@localhost Desktop]#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值