代码如下:
#ifndef LIB2_LIBRARY_H
#define LIB2_LIBRARY_H
void AAA();
#endif //LIB2_LIBRARY_H
#include "lib2.h"
#include <stdio.h>
void AAA() {
printf("Hello from SO 2\n");
}
编译过程:
gcc -shared lib2.c -o liblib2.so
gcc -c lib2.c
ar -r liblib2.a lib2.o
结果:
-rw-rw-r-- 1 wzj wzj 1676 12月 30 15:11 liblib2.a
-rwxrwxr-x 1 wzj wzj 7896 12月 30 15:10 liblib2.so
现象是静态库要更加小,这合理吗?
静态链接库比较大,因为静态链接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件,可以理解为所需库文件和调试符号等相关信息都会打包到静态链接库