1、编译动态链接库,将lib_a.c和lib_b.c编译成动态库
lib_common.h
#ifndef __LIB_COMMON_H
#define __LIB_COMMON_H
void liba_printf();
void libb_printf();
#endif
lib_a.c
#include <stdio.h>
#include "lib_common.h"
void liba_printf(void)
{
printf("This is lib a print.\n");
return;
}
lib_b.c
#include <stdio.h>
#include "lib_common.h"
void libb_printf(void)
{
printf("This is lib b print.\n");
return;
}
将上面两个文件编译成动态库:
gcc lib_a.c lib_b.c -fPIC -shared -o libtest.so
在当前目录下会生成库文件libtest.so
2、使用动态链接库文件
main.c
#include <stdio.h>
#include "lib_common.h"
int main(void)
{
printf("Main Func reference the lib fun.\n");
liba_printf();
libb_printf();
return 0;
}
编译main.c的命令:
gcc main.c -L. -ltest -o main(-L后面有个.,表示链接库的目录是在当前目录,否则编译会出Undefined symbols错误)
运行./main,输出:
Main Func reference the lib fun.
This is lib a print.
This is lib b print.