更改 Linux 可执行文件的特定共享库

更改 Linux 可执行文件的特定共享库

我正在基于 GNU/Linux 的服务器上构建 android 应用程序,aapt 抱怨 lib/libz.so.1 已过时:

/lib/libz.so.1: no version information available (required by .../aapt)

我已经确定了问题所在,并尝试将新的 zlib 库硬链接到 aapt,以便它使用更新的库而不是旧的 libz.so.1 => libz.so.1.2.3(因为我想避免重新配置所有使用现有 zlib 的程序)。不幸的是,/lib 和 /aapt 位于硬盘的不同分区上。

解决这个问题的最佳方法是什么?有没有一种简单的方法可以简单地替换 libz aapt 所依赖的版本?

谢谢

答案1

  1. 最简单的选择是将正确版本的库放在某处(任何地方,单独),并LD_LIBRARY_PATH在执行时将环境变量设置为该目录aapt

  2. 将正确版本的库放在上面某个地方,但将aapt二进制文件的“rpath”更改为使用 进行查找chrpath。请参阅https://stackoverflow.com/questions/13769141/can-i-change-rpath-in-an-already-compiled-binary更多细节。

相关内容