是否可以看到哪个目标目标传播了-lpthread标志?

问题描述

当使用带有Bazel的自定义工具链(Android arm64-v8a目标)构建TensorFlow时,即使Android构建不是必需的,最终共享库也依赖于libpthread.so。使用同名的虚拟库可以很好地运行该库。

由于我已经删除了TensorFlow存储库中所有lpthread/pthread出现的情况,因此我认为存在一些传播链接标志的外部依赖项。

是否可以通过某种方式跟踪哪个目标为Bazel添加了特定的链接标志?不幸的是,-s标志仅显示最终的链接命令。

解决方法

bazel query是用于此目的的工具。此命令将为您提供所有在其linkopts中带有-lpthread(或-pthread-Wl,-lpthread之类的替代拼写)的传递依赖项:

bazel query 'attr(linkopts,"pthread",deps(//my:target))'