动态链接,在windows上是Dynamic link library (DLL),在UNIX或Linux上是Shared Library(.so)
动态链接和静态链接的区别
静态连接就是在程序编译阶段,将程序需要的所有东西打包放到一起;而动态链接是在程序需要运行时,根据需要动态的决定链接哪一个库,哪一个函数。
linux编译文件说明
.o
-目标文件,相当于windows中的.obj文件
.so
-动态链接库(使用$ gcc a.c b.c -fPIC -shared -o libtest.so
生成)
.a
-静态链接库,是多个.o合在一起(使用ar -r mylib.a mylib.o
命令生成)
.la
-libtool自动生成的一些共享库,主要记录了一些配置信息可以使用
ldd
命令查看如何调用动态库中的函数编译参数解析
-shared 指定生成动态链接库
-fPIC 表示编译为位置独立的代码
-L. 表示要连接的库在当前目录中
-ltest 编译器查找动态链接库时有隐含的命名规则,即在给出的名字前面加上lib,后面加上.so来确定库的名称linux与程序编译有关的文件夹功能说明
/bin
存放一些普通的基本命令,如ls,chmod(普通用户就行)
/sbin
属于基本的系统命令,如shutdown,reboot(管理员才能有权限)
/usr/bin
存放在后期安装的一些软件的运行脚本,如g++、gcc、 gzip
/usr/sbin
放置一些用户安装的系统管理的必备命令 ,如httpd、sendmail、swap、tcpd、tcpdump
/usr/local/bin
/usr/local/sbin
是用户自己编译安装的
注:放在/lib
和/usr/lib
和/usr/local/lib
里的so库直接用-l参数就能链接