0
点赞
收藏
分享

微信扫一扫

[C语言] 函数详解:库函数与自定义函数

有态度的萌狮子 2024-10-13 阅读 22
linux

1.1 库的概念

库是由.c文件编译生成的二进制文件。

库的内部就是各种函数的实现。

windows中库的格式:

        xxx.dll -- 动态库

        xxx.lib -- 静态库

linux中库的格式:

libxxx.a --- 静态库

libxxx.so --- 动态库

2.1 静态库的制作和使用

2.1.1 静态库的概念

        静态库的格式是libxxx.a

静态库在使用的时候,会将库中所有的机器码编译到可执行程序中。

使用静态库的程序,体积比较大。

使用静态库的可执行程序,运行的效率比较高。

静态库的运行,不依赖库文件。

静态库的更新比较麻烦,需要对整个程序重新编译。

2.1.2 静态库的制作

        1.将xx.c 编译生成 xxx.o

                gcc -c xxx.c -o xxx.o

        2.制作静态库

                ar -cr libxxx.a xxx1.o xxx2.o ……

                xxx是哭的名字,比如libadd.a ,add就是库的名字

                将编译生成的.o文件放入库中。

                ar:制作库的命令

                -c:create

                -r:replace

        3.使用静态库的方式

                方式1:直接编译

                        gcc main.c /路径/libxxx.a -o main

                方式2:

                        gcc main.c -l库名 -L 库文件所在路径 -o main

                        -l库名:表示链接库

                        -L 库文件所在路径:表示指明库文件的位置

2.2 静态库的使用示例

add.h

#ifndef __ADD_H__
#define __ADD_H__

int add(int x,int y);

#endif

add.c

int add(int x,int y){
return x+y;
}

main.c

#include<my_head.h>
#include "add.h"
int main(int argc,const char *argv[]){
int sum = add(10,20);
printf("sum = %d\n",sum);
return 0;
}

 1.编译生成库文件

2.3 使用静态库

方式1:直接编译

方式2:(推荐使用)

3.1 动态库

动态库的使用格式libxxx.so

动态库在使用的时候,只会将库中的函数的符号表编译到库文件中,使用动态库的程序,体积比较小。

使用动态库的可执行程序,运行的效率比较低。

动态库的运行需要依赖库文件。

动态库的更新比较方便。只需要替换库文件即可,不需要对可执行程序重新编译。

举报

相关推荐

0 条评论