Linux 之静态库和动态库
一、库的概念
1.1 介绍

win32平台下,静态库通常后缀为.lib,动态库为.dll ;
linux平台下,静态库通常后缀为.a,动态库为.so 。
静态库的名字一般为libxxxx.a,其中xxxx是该lib的名称;
动态库的名字一般为libxxxx.so.x.y.z,含义如图所示:
1.2 静态库
1.2.1创建静态库 xxx.a格式
(a)gcc func.c -c 生成.o

ar rcs libtestfunc.a func.o --生成.a静态库文件

编译的时候采用静态链接,编译使用l 然后lib去掉后面的.a文件名,如下图,然后的话,要注意的是


calmain.c
#include<stdio.h> #include<stdlib.h> #include"func.h" int main() { int a,b,ret; float retfloat; printf("please input num1,num2\r\n"); scanf("%d %d",&a,&b); ret=add(a,b); printf("add=%d\r\n",ret); ret=min(a,b); printf("min=%d\r\n",ret); ret=mul(a,b); printf("mul=%d\r\n",ret); retfloat=chuFa(a,b); printf("chuFa=%f\r\n",retfloat); return 0; }
func.c
#include"func.h" int add(int a,int b) { return a+b; } int min(int a,int b) { return a-b; } int mul(int a,int b) { return a*b; } float chuFa(int a,int b) { return (float)(a/b); }
func.h
int add(int a,int b); int min(int a,int b); int mul(int a,int b); float chuFa(int a,int b);
1.2.2静态库的优缺点
1.3 动态库
gcc -shared -fpic func.c -o libcalc.so
-shared 指定生成动态库
-fpic标准,fPIC 选项作用于编译阶段,在生成目标文件时候就得使用该选项,以便于生成位置无关的代码

动态库是会通过内容去在/usr/lib寻找

liunx设置引用动态库的位置
常用:
1.临时脚本,只会作用于当前的代码区段

2.建立脚本
1 vi start.sh 2 在脚本里面输入: export LD_LIBRARY_PATH="/home/pi/lession/ ./mainmove 3 给文件加权限 sudo chmod +x start.sh

浙公网安备 33010602011771号