深入理解静态库与共享库:原理、应用与对比
1. 解决共享库搜索难题
在使用新创建的共享库时,可能会遇到搜索困难的问题。可以通过修改 LD_LIBRARY_PATH
变量来包含当前目录,使用 $PWD
这个 shell 变量实现。
1.1 修改 LD_LIBRARY_PATH
$ LD_LIBRARY_PATH=$PWD
$ export LD_LIBRARY_PATH
$ ldd ./getuid
./getuid:
libshared.so => /home/me/myproject/libshared.so (0x28063000)
libstdc++.so.2 => /usr/lib/libstdc++.so.2 (0x28065000)
libc.so.3 => /usr/lib/libc.so.3 (0x2809c000)
libm.so.2 => /usr/lib/libm.so.2 (0x2811d000)
修改 LD_LIBRARY_PATH
后,动态加载器就能定位到共享库文件 libshared.so
。如果 LD_LIBRARY_PATH
变量中已经包含了其他目录,更好的做法是:
$ LD_LIBRARY_PATH=$LD