如何支持多个不同版本的glibc
开发用的机器一般不会随意升级运行库,但一些新功能的工具又是需要新版本的运行库
怎么办呢?
1.工具如果是自己编译的,加编译参数
-Wl,–rpath=/path/to/newglibc \
-Wl,–dynamic-linker=/path/to/newglibc/ld-linux.so.2
2.不是自己编译的,如果只是单个文件,如下运行
LD_PRELOAD=/data/glibc-2.28/lib/libc.so.6 LD_LIBRARY_PATH=./ /data/glibc-2.28/lib/ld-2.28.so ./test
3.如果很多文件,可以用一个工具patchelf修改加载器和库路径
https://github.com/NixOS/patchelf/releases
patchelf --set-interpreter /my/lib/my-ld-linux.so.2 program
patchelf --set-rpath /opt/my-libs/lib:/foo/lib program
或者你会想,为什么不可以改LD_LIBRARY_PATH呢,因为改了环境变量,会影响系统原来程序的运行,可能会让程序崩溃,甚至ls都会崩溃
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号