假设有a.c b.c c.c三个源文件要编译为一个动态链接库文件,有main.c调用此动态库文件。
gcc -fpic -c a.c b.c c.c
gcc -shared -fpic libprog.so a.o b.o c.o
上两个命令也可以替换为:
gcc -shared -fpic a.c b.c c.c -o libprog.so
最后编译main.c并连接动态库文件
gcc main.c -o main -L(so文件路径)-lprog
–fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
–shared:指明编译成动态库。
可以使用ldd测试main程序依赖的动态库文件