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 

 

posted @ 2023-03-19 12:23  thankunext  阅读(249)  评论(0)    收藏  举报