静态库和动态库有什么区别?
在这里通俗的回答一下,使用了静态库中相关的函数的程序代码在编译时会把静态库的相关的代码一起嵌入到整体的代码中,体积会大一些,但由于所有引用的函数功能代码都包含在程序中,所以这个程序可以直接在同种系统中直接运行。
使用了动态库的程序,在编译程序代码时并不会像使用静态库那样嵌入代码,而是记录了相关函数的位置,在程序运行时再去从相关的动态库中载入函数实现相关的功能,由于程序与库代码分开,所以程序在编译后的体积不会很大,但如果在同种系统中没有相关的动态库或者动态库文件的位置与编译时指定的位置不一致就无法运行程序了。
一种是改 ldconfig 的配置并更新缓存,(如图)另一种是指定 LD_LIBRARY_PATH 环境变量的值,当然不同类型的系统对个环境变量的名称不一样,不过我试了一下第一种有效,但是第二种没试成功。配合这里的演示我写了一个 conf.sh 脚本来增加默认的 lib 路径,所以在编译完程序之后记得运行一下这个脚本。