想把libc.so换成低版本的测试下程序反应,
mv /lib/x86_64-linux-gnu/libc.so.6 /lib/x86_64-linux-gnu/libc.so.6_bk
然后就全部
ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
mv: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
mv: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
好多命令都报错, 尴尬了,回不去了,得重装系统了吗????
使用下面命令修改回去了,^_^
LD_PRELOAD=/lib/x86_64-linux-gnu/libc.so.6_bk mv /lib/x86_64-linux-gnu/libc.so.6_bk /lib/x86_64-linux-gnu/libc.so.6
LD_PRELOAD 为linux调用so的库文件时提供一个路径.
LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib。程序中我们经常要调用一些外部库的函数,以malloc为例,如果我们有个自定义的malloc函数,把它编译成动态库后,通过LD_PRELOAD加载,当程序中调用malloc函数时,调用的其实是我们自定义的函数