如何在Linux下创建和使用静态库和动态库?

项目场景1:静态库

静态库
1.介绍:
在程序执行前,静态库就已经加入到目标程序中去。
2.优点:
使得程序执行速度快,运行的时候不用再去找库。
3.缺点:
相反,静态库需要在程序编译的时候就要加进去,显然程序体积会变大。


静态库的创建和使用:

提示:这里以calFun.c和calFun.h还有calMain.c 三个文件作为本文的例子引用。

	//**
		1.创建.o文件。
		2.创建.a文件。
		3.使用静态文件
	**//
	//1.创建.o文件
        gcc calFun.c -c //这里会生成calFun.o文件
    //2.创建.a文件
    	ar rcs libcalFun.a calFun.o //注意这里静态库名前面必须要有lib前缀,否则用到静态库的时候在当前路径检查不到
    //3.使用静态库
    	gcc calMain.c -lcalFun -L ./ -o static_cal_out//-L 先从当前路径找看有无指定静态库,没有再去/usr/lib/里面找

项目场景2:动态库

动态库
1.介绍:
动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。
2.优点:
使得程序执行速度慢。
3.缺点:
相反,程序体积小


动态库的创建和使用:

提示:这里以calFun.c和calFun.h还有calMain.c 三个文件作为本文的例子引用。

//**
		1.创建.o文件。
		2.生成.so文件。
		3.使用动态文件
	**//
	//1.创建.o文件
        gcc calFun.c -c -fpic //这里会生成calFun.o文件
    //2.生成.so文件
    	gcc -shared calFun.o -o libcalFun.so //一样的需要注意这里静态库名前面必须要有lib前缀。
    //3.使用静态库
    	gcc calMain.c -lcalFun -L ./ -o dynamic_cal_out//-L 先从当前路径找看有无指定静态库,没有再去/usr/lib/里面找

之后会遇到错误:

错误描述:lib下没有这个库。。


解决方案:

在当前路径下添加这句,如下:(将这个路径设置为环境变量,编译时候就可以找到)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/gabe/Linux/library/lib 

但这只是暂时的,也可以直接将这个动态库加到lib里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值