1.我要做一个动态库,动态库里面是我自己定义的函数
比如:我自定义一个dll_init()函数,将其做成共享库
1 #include<stdio.h>
2 void dll_init()
3 {
4 printf("dll_init...\n");
5 }
函数声明
1 #ifndef __DLL_INIT_H
2 #define __DLL_INIT_H
3 void dll_init();
4 #endif
libdll.so路径下的Makefile
1 .PHONY:clean
2 libdll.so:dll_init.o
3 gcc -o $@ -shared $^ #动态共享库
4 dll_init.o:dll_init.c
5 gcc -o $@ -fPIC -c $^ #和位置没有关系
6 clean:
7 rm libdll.so dll_init.o
编译
2.动态库的使用
现在我要在main.c中使用libdll.so共享库
main.c
1 #include<stdio.h>
2 #include"dll_init.h"
3
4 int main()
5 {
6 dll_init();
7 return 0;
8 }
main.c路径下的Makefile
1 .PHONY:clean
2
3 hello:main.o
4 gcc -o hello main.o -L./ -ldll
5 main.o:main.c
6 gcc -o $@ -c -fPIC $^
7 clean:
8 rm -f main.o hello
将libdll.so和dll_init.h放到main.c的路径下(也可以在Makefile中指定目录)
并且libdll.so还需要放到/usr/lib目录下,负责会报错
编译