摘要:
库:是一组预先编译好的函数的集合,linux中标准系统库文件一般存储在/lib和/usr/lib目录中 静态库:在程序编译过程中,就被链接到了程序编写者所写的源代码中,静态库以.a结束。 共享库:在程序运行时载入,编译时只需说明所需要的共享库文件即可。共享库以.so接受。 头文件:用于保存程序的声明。 makefile文件:makefile带来的好处就是——“自动化编译”,一旦写好各文件的依赖项及... 阅读全文
摘要:
静态库和动态库 在windows中静态库是以 .lib 为后缀的文件,共享库是以.dll 为后缀的文件。在linux中静态库是以 .a 为后缀的文件,共享库是以 .so为后缀的文件。 以linux下的静态库和动态库为例我们研究一下,首先我们看一下他们的生成方式静态库:首先将源文件编译成目标文件:gcc –c a.c b.c生成静态库:ar –rc libstatic.a a.o b.o共享库:同静... 阅读全文
摘要:
1.一般来说依赖关系可以使得软件较小并且某个lib修复bug以后所有被依赖的软件都能得到好处。 依赖关系下,对于维护也有利有弊,第一,若某个被依赖的软件出现bug或者漏洞,这时候就只需要维护一个软件,可以不动依赖它的上层软件,而win下面,(除了系统的api),安装包都被打成静态包了,这时候如果有个bug,那每个软件都需要打补丁;其二,简化了安装,无须判断其他需要链接的软件的位置。有些时候依赖关... 阅读全文
摘要:
要点:ldd 可以读取每个可以运行的程序依赖的 so 文件。 编译的时候提示需要Openssl库. 查看本机,已经安装了openssl 查看编译报错文件,查找Openssl所依赖的库 more objs/autoconf.err 查看openssl所依赖的库文件 ldd /usr/bin/openssl ldd –u /usr/bin/openssl objdump -x obj 以某... 阅读全文