我是bazel的新手。以下是bazel doc中的解释:
https://docs.bazel.build/versions/master/be/c-cpp.html#cc_library.alwayslink
alwayslink
布尔;可选的;不可配置;默认值为0
如果为1,任何依赖于(直接或间接)此C ++的二进制文件 库将链接到列出的文件的所有目标文件中 srcs,即使某些不包含二进制引用的符号。这个 如果您的代码没有被二进制代码显式调用,则非常有用, 例如,如果您的代码注册接收一些提供的回调 服务。
我不太明白最后一句话:e.g., if your code registers to receive some callback provided by some service.
任何人都可以举例说明吗?谢谢!
答案 0 :(得分:1)
例如,如果你的代码注册接收某些服务提供的一些回调。
AIUI,cc_binary
构建共享库/ DLL时就是这种情况。您需要链接器保留所有符号,即使未使用,因为在运行时加载.so / .dll的另一个二进制文件可能需要这些符号。