linux编译静态库和共享库

假如有两个向量操作的C文件addvec.c和multvec.c。

若要把他们编译成静态库libvector.a,首先要将两个C文件经预处理,编译,汇编得到可重定位目标文件(.o),然后要使用AR工具将其编译为静态库(.a)。

gcc -c addvec.c multvec.c  //得到.o文件
ar rcs libvector.a addvec.o multvec.o  //得到.a文件

gcc -c main.c               
gcc -static -o main main.o ./libvector.a  //使用静态库

若要把它们编译成动态库,即共享目标文件(.so),使用-shared选项指示链接器创建一个共享目标文件,-fpic选项指示编译器生成位置无关的代码。

gcc -shared -fpic -o libvector.so addvec.c multvec.c  //生成共享库(.so)

gcc -o main main.c ./libvector.so  //使用共享库

 

你可能感兴趣的:(C)