升级到Ubuntu会导致gcc -fsanitize失败

时间:2018-11-21 22:20:38

标签: ubuntu-18.04 gcc7

我在VirtualBox下运行Ubuntu 并使用gcc 7.3.0使用automake通过系统(netcdf-c)进行构建

我正在使用-fsanitize = address 作为CFLAGS的一部分,所以我可以进行内存泄漏检查。

我最近建议将其升级到ubuntu 18.04。 现在./configure无法检查是否出现以下错误的交叉编译:

  

== 9629 == ASan运行时不在初始库列表中排在首位;您应该将运行时链接到您的应用程序,或者手动使用LD_PRELOAD对其进行预加载。

所以我尝试了以下操作:

  1. 创建了一个简单的conftest.c
      

    int main(){返回0;}

  2. 使用 gcc -o conftest -fsanitize = address conftest.c
  3. 我运行了./conftest -导致出现上述错误消息。

所以我尝试了:

  1. 将-lasan添加到gcc命令中-同样失败
  2. 设置LD_PRELOAD = / usr / lib / gcc / x86_64-linux-gnu / 7 / libasan.so 在编译之后,但在执行./conftest之前-起作用。

但是,如果在执行./configure之前设置LD_PRELOAD,则 ./configure失败并引发各种投诉:不足为奇。

我认为我对自动制作没有足够的控制权 使用LD_PRELOAD解决此问题。

两个问题:

  1. 为什么升级突然导致gcc无法正确加载libasan?

  2. 是否有修复程序?

其他。注意:

  1. 我卸载并重新安装了gcc-无效
  2. 我删除了旧版本的libasan-无效

0 个答案:

没有答案