一、静态库的制作与使用
生成静态的主要是有5个步骤
1、编写源代码
2、将要编译成库的源文件编译成.o文件
3、使用ar命令创建静态库
4、调用库
5、测试
静态库的命名规则:lib开头。.a结尾。lib和.a中间的称作库名。lib+库名称作库文件名
1.1 先写两个测试程序,这里使用mylib.c和test.c
mylib.c
#include <stdio.h>
#include <stdlib.h>
void mylib(void) {
printf("this is mylib\r\n");
}
mylib.h就是为了声明一下函数便于使用头文件调用
#ifndef __MYLIB_H
#define __MYLIB_H
void mylib(void);
#endif
test
#include <stdio.h>
#include <stdlib.h>
#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
如下:
开发板运行:
以防学习后忘记,小记一下。