从源文件生成动态链接库
$ gcc -fPIC -shared func.c -o libfunc.so
从目标文件生成动态链接库:
$ gcc -fPIC -c func.c -o func.o
$ gcc -shared func.o -o libfunc.so
-fPIC 选项作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code);这样一来,产生的代码中就没有绝对地址了,全部使用相对地址,所以代码可以被加载器加载到内存的任意位置
.so东态链接库(shared object file,共享对象文件)
GCC 将动态链接库链接到可执行文件
$ gcc main.c libfunc.so -o app.out