Linux入门 系统编程三 嵌入式开发 使用gcc制作静态库&动态库,及调用库头文件应用

一、静态库的制作与使用

生成静态的主要是有5个步骤
1、编写源代码
2、将要编译成库的源文件编译成.o文件
3、使用ar命令创建静态库
4、调用库
5、测试

静态库的命名规则:lib开头。.a结尾。lib和.a中间的称作库名。lib+库名称作库文件名

1.1 先写两个测试程序,这里使用mylib.c和test.c

mylib.c

#include 
#include 

void mylib(void) {
	printf("this is mylib\r\n");
}

mylib.h就是为了声明一下函数便于使用头文件调用

#ifndef __MYLIB_H
#define __MYLIB_H

void mylib(void);

#endif

test

#include 
#include 
#include "mylib.h"
i
nt main(int argv, char *argc[]) {
	mylib();
	return 0;
}

建好后:
在这里插入图片描述

1.2 生成 .o文件

gcc -c mylib.c -o mylib.o

在这里插入图片描述

1.3 生成库

ar -cr libmylib.a mylib.o

在这里插入图片描述

1.4 编译测试程序,调用库函数

gcc test.c -lmylib -L .

这里编译的程序是:test.c
-l后面跟的是库名,就是要调用哪个库
-L后面跟的是库所在的目录
在这里插入图片描述

1.5 测试

如愿打印了库中的函数:
在这里插入图片描述

二、动态库的制作与使用

动态库制作和使用的步骤
动态库也叫做分享库
1、编写源代码
2、将要编译成库的源文件编译成.o文件
3、使用gcc命令创建动态库
4、添加库路径
5、调用库
6、测试

1.1 代码还是使用以上的程序,只是拷贝了一份

在这里插入图片描述

1.2 编译成.o文件

gcc -c -fpic mylib.c -o mylib.o

在这里插入图片描述

1.3 创建动态库

gcc -shared -o libmylib.so mylib.o
在这里插入图片描述

1.4 设置库的路径

默认情况下搜索动态库的路径在/lib/和/usr/lib。

所以。
方式1、可以拷贝动态库到上面的两个目录之一下面。
方式2、添加环境变量,只有当前终端有效

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/topeet/share/SystemPrg/06

方式3、修改 /etc/ld.so.conf文件,添加生成动态库的路径到该文件中,并使用ldconfig更新一下即可。

1.5 编译测试程序,调用库函数

gcc test.c -lmylib -L .

在这里插入图片描述

1.6 测试

在这里插入图片描述

补充,编译成rk3568的可执行程序

步骤和Ubuntu下的方法类似,只是把gcc改成交叉编译器 aarch64-linux-gnu-gcc
如下:
Linux入门 系统编程三 嵌入式开发 使用gcc制作静态库&动态库,及调用库头文件应用_第1张图片
开发板运行:
在这里插入图片描述

以防学习后忘记,小记一下。

你可能感兴趣的:(linux,服务器,系统编程,ubuntu,动态库,静态库)