linux C 学习笔记(一):静态编译与动态编译

原有工程文件:test.c test.h

静态编译指令

生成可执行文件:

gcc -c test.c -o test.o

生成静态库:

ar rc libtest.a test.o

静态编译源文件:

gcc hello.c -o hello ./libtest.a

动态编译指令

生成动态库:

gcc -shared -fPIC -o libtest.so test.c

动态编译源文件:

gcc hello.c -o hello ./libtest.so

静态库与动态库区别

两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库,最后的执行文件就玩不转了。

你可能感兴趣的:(linux-c)