最佳答案
replace path to existing library with a custom path
如果这是你自己的库,那么你可能会像这样链接它:
$cc -o prog1 -l/full/path/to/libABC.so prog1.o
而不是正确的:
$cc -o prog1 -L/full/path/to/ -lABC prog1.o
第一种方法告诉Linux链接器应用程序正好需要该库,只有该库并且不应该覆盖.第二种方法告诉应用程序需要安装在系统某处的库,可以是默认库路径,也可以是$LD_LIBRARY_PATH指向的库(将在运行时查找). -L仅在链接时使用.
否则,不要修补ELF,首先检查是否可以使用符号链接替换库.这是通常的技巧:之后很难修改可执行文件,但很容易更改符号链接指向的位置.