我的开发机器中有一个二进制文件,ldd命令没有显示libasan。但是当我把相同的二进制文件复制到另一台生产机器时。ldd命令显示libasan。我不知道这是如何发生的。请帮帮我。
## DEV VM ##
cohesity - main: ldd <path> | grep -i asan
cohesity - main: md5sum <path>
11152b37c616555eed06800ee499323a <path>
### Production machine ##
[support@suresh-test-005056af8cb9-node-1 ~]$ md5sum <path>
11152b37c616555eed06800ee499323a <path>
[support@suresh-test-005056af8cb9-node-1 ~]$ ldd <path> | grep -i asan
libasan.so.4 => <path to libasan> (0x00007f72595e7000)
[support@suresh-test-005056af8cb9-node-1 ~]$
发布于 2022-03-06 06:30:04
我不知道这是怎么发生的。
ldd命令输出取决于以下几点:
recursively
preload库等)通过将主二进制文件复制到不同的机器上,您只能保证“步骤1”是相同的。
“步骤2”中的一个共享库很可能是用-fsanitize=address在node-1上构建的,而不是在"dev VM“中构建的。
您可以通过对readelf -d /path/to/foo.so | grep NEEDED.*libasan.so.4输出中的每个库使用ldd来找出哪个库。
https://stackoverflow.com/questions/71360688
复制相似问题