例如有文件:hello.c hello.h main.c
编译:gcchello.c-fPIC-olibhello.so
其中-fPIC选项的作用是:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,
所以动态载入时是通过代码拷贝的方式来满足不同的调用,而不能达到真正的代码段共享的目的.
将main.c与hello.so动态库l链接
gccmain.c-L.-lhello-omain
一、动态链接库
hello.h
hello.c
3.编译成够后执行./main,会提示:
In function `main':main.c:(.text+0x1d): undefined reference to `hello'collect2: ld returned 1 exit status
这是因为在链接hello动态库时,编译器没有找到。解决方法:
可以使用ldd来查看动态链接情况:
结果:这样,再次执行就成功输出:hello world
二、静态库
文件有:main.c、hello.c、hello.h
1.编译静态库hello.o:
4.执行./main
输出:hello world
参考:http://blog.csdn.net/a600423444/article/details/7206015