假设当前目录下有文件:
hello.h
hello.c
main.c
其中hello.h为头文件,hello.c实现头文件中声明的函数,main.c为主程序,调用了头文件中的函数。
动态编译:
1.生成.so动态库文件
gcc -fpic -shared hello.c -o libhello.so
2.加载动态库生成可执行文件
gcc main.c libhello.so -o main
3.可能会报错找不到.so文件。有几种解决方法,这里采用把动态库复制到/lib/目录下
cp libhello.so /lib/
静态编译:
1.生成.o文件
gcc -c hello.c
2.生成静态库文件
ar -r libhello.a hello.o
3.生成可执行文件
gcc main.c -static libhello.a -o main
-fpic表示生成位置独立的代码
-shared表示生成动态库
-static表示生成静态库