Linux下hook指定库

最近遇到个问题 ffmpeg下面的libx265只支持8its 要支持10bits需要重新编译 但是不能同时支持8bits和10bits 就是说需要编译两个版本了

有个设想能不能通过动态库的方式调用libx265 然后通过hook的方式指定库位置 实现兼容8bits,10bits

可以用环境变量LD_PRELOAD来实现 用法如下

LD_PRELOAD="/home/libx265-8bits.so /home/libx264-8bits.so " ./ffmpeg -i /home/test.mp4

这里就优先加载我们指定的库了

LD_PRELOAD,是个环境变量,用于动态库的加载,动态库加载的优先级最高,一般情况下,其加载顺序为LD_PRELOAD>LD_LIBRARY_PATH>/etc/ld.so.cache>/lib>/usr/lib