编程中用到链接的是.c文件和库(库里一般都是些函数,变量),.c文件要想用库里的内容就得做链接。
1、静态链接
静态链接:譬如让书本和白板上的笔记之间做静态链接,就是把白板上的笔记抄在书上书和笔记形成一个整体(可执行程序),这个时候把白板上的内容擦掉也没关系,因为已经整合到书上了。静态链接的优点是“效率高”因为都在一个地方,你看书就很方便快捷。缺点是可执行程序偏大,需要更多的系统资源。
(1) 制作静态链接库
链接库源文件:mylib.c
第1步:gcc mylib.c -o mylib.o -c //把mylib.c 文件[编译不链接]成.o文件
第2步:ar mylib.o -rc libmy.a //ar工具把.o文件打包成.a
(2) 使用静态链接库
gcc myPro.c -o myPro -lmy -L. //libmy.a只需用my即可: -lmy
./myPro //执行程序
2、动态链接
动态链接:如果只是在书上注释“这章节的笔记在L2-122的白板上”,并没有把笔记抄在书上,书和白板上的笔记是互相独立的,当看书看到这里需要笔记的时候才通过这个注释跑去L2-122教室看白板,这个就叫动态链接。动态链接的方式白板上的内容是不许擦掉的,不然下次找不到。优点就是不占用书本空间,缺点是“效率相对低些”。
(1) 制作动态链接库
链接库源文件:mylib.c
第1步:gcc mylib.c -o mylib.o -c fpic //把mylib.c文件[编译不链接]成.o文件。 pic(Position-Independent Code)位置无关码
第2步:gcc mylib.o -o libmy.so -shared //-shared 按照共享库的方式来链接
(2) 使用动态链接库
gcc myPro.c -o myPro.c -lmy -L.
./myPro //执行程序