1 生成库文件
背景:本例中我们要编译的文件为mylib.h,mylib.c,位置在/mylib
<-------------------正式开始,兵分两路----------------------------------------->
<-------静态链接---------------->
⑴生成目标文件
gcc -c mylib.c
执行完后会生成一个myalib.o文件
<-------静态链接----------------> <------动态链接------------->
⑵用ar命令归档,格式为ar -rc gcc -fpic -shared -o libmylib.so mylib.c
再次提醒,归档文件名一定要以lib打头, .a结尾。
ar -rc libmylib.a myalib.o
执行完后会生成一个libmylib.a文件
2 调用库文件
背景:我们调用库文件的例子在/test.c,其中用#include"mylib.h"包含库文件
<-------------------正式开始,兵分两路 ----------------------------------------->
<-------静态链接----------------> <------动态链接------------->
g++ test.c -L /mylib/loger -I /mylib/ -static -lmylib -o test
说明:
-L指定libmylib.a文件路径
-I指定mylib.h路径
-static强制链接静态库,避免优先链接动态库
-lmylib 是linux下库文件命名规范
例如GCC在对-lfoo进行处理时,会自动去链接名为libfoo.so的文件