如何更改libasan的默认动态库搜索路径

时间:2016-10-24 09:28:45

标签: c++ c++11 gcc address-sanitizer

我有一个应该在各种平台上运行的应用程序,例如ARM,i386,amd64等。我想检查任何可能的内存泄漏,我在GCC中启用了地址清理程序 -fsanitize=address 我们使用buildroot来编译整个OS + Application。为确保每个开发人员安装了相同版本的库,我们在ProjectX/lib中打包所有必需的动态库 path并将其设置为LD_LIBRARY_PATH。 如果关闭地址消毒剂,一切正常。在使用地址清理程序进行编译并运行应用程序时

/lib/i386-linux-gnu/libm.so.6: version `GLIBC_2.23' not found (required   by BUILD/host_shared_0_1/host/usr/i686-buildroot-linux-gnu/lib/libasan.so.1)

`GLIBC_2.23'已经存在,但打包在$ ProjectX / lib下 但是,libasan在/ lib / i386-linux-gnu /下查找它,并且在找到不兼容的版本时,会抛出错误。

问:我如何指示libasan仅在LD_LIBRARY_PATH指定的路径中查找所需的库。

1 个答案:

答案 0 :(得分:0)

您的buildroot和实际运行时环境似乎是二进制不兼容的,即libasan需要libm版本 newer 而不是环境中安装的版本。这不是Asan的问题本身,二进制不兼容可能会导致其他软件出现问题。有关详情,请参阅google for"版本GLIBC_2.23未找到"。

  

如何指示libasan在路径中查找所需的库   仅由LD_LIBRARY_PATH指定。

它现在的作用。