动态链接库的就基础知识
库有两种:动态和静态;动态是以.so 为后缀,静态是以.a为后缀;比如:libhello.o libhello.a
- 静态库是在写代码时调用的库函数,代码中调用库函数,在编译时会从库函数中copy 整个库函数到可执行文件;所以一旦连接成功(编译成功);可执行文件中就包含了
整个库函数的代码,以后在执行这个静态文件时就不用这个静态库函数了。
- 动态库函数:在linux中.so 为后缀,不是可执行程序的一部分,当执行可执行程序时动态加载这个动态链接库;而且这个动态链接库也是多个程序共享的,可以节省空间;linux 下进行连接的默认操作是首先连接动态连接。工作原理是动态库会在可执行程序内留下一个标记;指明当程序执行时,首先必须载入这个动态库
- linux 动态连接库,叫 共享对象:shared object ;就相当于windows下面的DLL
LINUX 的shared object 在我们日常写代码中可以自己写,把一些常用的工具都写成库函数,这样每次用时直接调用库函数,不用重复写代码。
Linux ldd 命令详解
- ldd 是一个linux的 shell 脚本,并不是一个可执行程序(C++编译后的可执行程序);用来打印共享库的依赖关系
which ldd /usr/bin/ldd
<