1. mylib.h
#ifndef __MYLIB__
#define __MYLIB__
int add(int a, int b);
int sum(int a, int b);
int mutil(int a, int b);
float div(int a, int b);
#endif
2. mylib.c
#include "mylib.h"
int add(int a, int b)
{
return a+b;
}
int sub(int a, int b)
{
return a-b;
}
int mutil(int a, int b)
{
return a*b;
}
float div(int a, int b)
{
return (float)a/b;
}
3. 创建静态库
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# gcc -o mylib.o -c mylib.c
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# ar rcs libmylib.a mylib.o
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# cp libmylib.a /usr/lib/
main.c
#include "./mylib.h"
#include <stdio.h>
void main(void)
{
printf("add(5,3) = %d\n",add(5,3));
}
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# gcc -o main main.c -lmylib
4. 创建动态库
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# gcc -fPIC -shared -o libmylib.so mylib.c
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# cp libmylib.so /usr/lib/
root@esp8266-VirtualBox:/mnt/Share/static_dynamic_lib# gcc -o main main.c /usr/lib/libmylib.so
注意:使用动态库时,必须指定动态库的全路径