ldconfig
静态库和动态库有什么区别?
在这里通俗的回答一下
静态库和动态库有什么区别? 在这里通俗的回答一下,使用了静态库中相关的函数的程序代码在编译时会把静态库的相关的代码一起嵌入到整体的代码中,体积会大一些,但由于所有引用的函数功能代码都包含在程序中,所以这个程序可以直接在同种系统中直接运行。 使用了动态库的程序,在编译程序代码时并不会像使用静态库那样嵌入代码,而是记录了相关函数的位置,在程序运行时再去从相关的动态库中载入函数实现相关的功能,由于程序与库代码分开,所以程序在编译后的体积不会很大,但如果在同种系统中没有相关的动态库或者动态库文件的位置与编译时指定的位置不一致就无法运行程序了。 一种是改 ldconfig 的配置并更新缓存,(如图)另一种是指定 LD_LIBRARY_PATH 环境变量的值,当然不同类型的系统对个环境变量的名称不一样,不过我试了一下第一种有效,但是第二种没试成功
linux中的ld-so与ld-linux-so
动态链接器
Linux中的ld-so与ld-linux-so 动态链接器/加载器,ld.so和 ld-linux.so*查找并加载程序运行时所需要的共享对象(共享库),然后准备好程序并运行它,Linux二进制文件需要在运行时进行动态链接,除非在程序编译期间为ld(GNU链接器)指定了-static选项。ld.so程序处理a.out二进制格式(一种年代久远的二进制格式),ld-linux.so*(于libc5而言是/lib/ld-linux.so.1,于glibc2而言是/lib/ld-linux.so.2)处理更加现代的ELF二进制格式。两个程序具有相同的行为,使用相同的支持文件和程序(ldd、ldconfig和/etc/ld.so.conf)
