StaticDynamicLibraryStudy
声明:资源链接索引至第三方,平台不作任何存储,仅提供信息检索服务,若有版权问题,请https://help.coders100.com提交工单反馈
静态库和动态库是C语言中常见的两种编译链接方式。
- 静态库:在编译时将库文件(.a或.lib)与可执行文件(.exe)一起打包,运行时直接加载库文件,不依赖外部函数。这种方式的优点是编译速度快,但缺点是如果库中的函数被修改,需要重新编译可执行文件。
- 动态库:在编译时不将库文件与可执行文件打包,而是在运行时通过dlopen()函数加载库文件。这种方式的优点是灵活性高,可以方便地添加、删除库中的函数,但缺点是编译速度慢,且库文件过大可能导致程序运行缓慢。
学习Demo:
1. 创建一个名为`main.c`的文件,包含以下代码:
2. 创建一个名为`my_library.h`的文件,声明一个名为`my_function`的函数:
3. 创建一个名为`my_library.cpp`的文件,实现`my_function`函数:
4. 创建一个名为`makefile`的文件,指定编译选项:
5. 使用以下命令编译并运行程序:
- 静态库:在编译时将库文件(.a或.lib)与可执行文件(.exe)一起打包,运行时直接加载库文件,不依赖外部函数。这种方式的优点是编译速度快,但缺点是如果库中的函数被修改,需要重新编译可执行文件。
- 动态库:在编译时不将库文件与可执行文件打包,而是在运行时通过dlopen()函数加载库文件。这种方式的优点是灵活性高,可以方便地添加、删除库中的函数,但缺点是编译速度慢,且库文件过大可能导致程序运行缓慢。
学习Demo:
1. 创建一个名为`main.c`的文件,包含以下代码:
#include
#include "my_library.h" // 假设有一个名为my_library的动态库
int main() {
printf("Hello, World!
");
return 0;
}
2. 创建一个名为`my_library.h`的文件,声明一个名为`my_function`的函数:
extern "C" {
void my_function();
}
3. 创建一个名为`my_library.cpp`的文件,实现`my_function`函数:
#include "my_library.h"
void my_function() {
printf("This is a dynamic library function.
");
}
4. 创建一个名为`makefile`的文件,指定编译选项:
CC = gcc
CFLAGS = -Wall -g
LDFLAGS = -L/path/to/your/library -lmy_library
all: main
main: main.o my_library.o
$(CC) $(CFLAGS) -o main main.o my_library.o $(LDFLAGS)
main.o: main.c my_library.h
$(CC) $(CFLAGS) -c main.c
clean:
rm -f main main.o my_library.o
5. 使用以下命令编译并运行程序:
make all
./main
-
fakeshelves
- 2025-04-11 22:52:23访问
- 积分:1
-
gaotihong
- 2025-04-11 22:51:51访问
- 积分:1
-
Qt SRC
- 2025-04-11 22:42:54访问
- 积分:1
-
UAV-Detect
- 2025-04-11 22:42:21访问
- 积分:1
-
EdacitySnake
- 2025-04-11 22:38:27访问
- 积分:1
-
RunMan
- 2025-04-11 22:38:00访问
- 积分:1
-
SimpleH264Analyzer
- 2025-04-11 22:29:38访问
- 积分:1
-
SimpleH264Analyzer
- 2025-04-11 22:29:06访问
- 积分:1
-
edatastructure
- 2025-04-11 22:22:41访问
- 积分:1
-
C++入门学习
- 2025-04-11 22:18:18访问
- 积分:1
-
函数
- 2025-04-11 22:17:38访问
- 积分:1
-
tools
- 2025-04-11 22:10:17访问
- 积分:1
-
AccountBook
- 2025-04-11 22:09:32访问
- 积分:1
-
NEMU2021
- 2025-04-11 22:00:51访问
- 积分:1
-
WindowsIntelPT-1
- 2025-04-11 22:00:15访问
- 积分:1
-
sound_display
- 2025-04-11 21:51:37访问
- 积分:1
-
PlaneFight
- 2025-04-11 21:49:30访问
- 积分:1
-
EIPScanner
- 2025-04-11 21:41:01访问
- 积分:1
-
mpeg4ip
- 2025-04-11 21:40:35访问
- 积分:1
-
图床
- 2025-04-11 21:36:56访问
- 积分:1
-
图床
- 2025-04-11 21:36:20访问
- 积分:1
访问申明(访问视为同意此申明)
2.部分网络用户分享TXT文件内容为网盘地址有可能会失效(此类多为视频教程,如发生失效情况【联系客服】自助退回)
3.请多看看评论和内容介绍大数据情况下资源并不能保证每一条都是完美的资源
4.是否访问均为用户自主行为,本站只提供搜索服务不提供技术支持,感谢您的支持