我想在我的一个基于bazel的c++项目中链接一个外部静态库。我需要"whole-archive
“选项来链接库,就像gcc或g++ build:
g++ main.cc -Wl,--whole-archive -lhttp -Wl,--no-whole-archive
有没有人能建议一下巴泽尔里"--whole-archive
“的替代品是什么?
发布于 2017-06-22 21:36:15
遗憾的是,linked始终不能与预编译库一起工作,只能与Bazel编译和链接的cc_library
一起工作。有一个未经记录的技巧(我想我只是通过在这里提到它来记录它),那就是将.a文件重命名为.lo文件。然后Bazel会将其链接为整个档案。
请注意,这是一个黑客攻击,并且会在没有警告的情况下停止工作。我们已经为这个用例制定了cc_import
规则的一些变体,将一个预编译的二进制文件导入到工作区中,并能够在其上设置整个归档。只是它还没有出现。
发布于 2017-06-22 00:47:39
https://bazel.build/versions/master/docs/be/c-cpp.html#cc_library.alwayslink
总是链接
布尔型;可选;不可配置;默认值为0
如果为1,则任何(直接或间接)依赖于此C++库的二进制文件都将链接到srcs中列出的文件的所有目标文件中,即使其中一些文件不包含二进制文件所引用的符号。如果您的代码不是由二进制文件中的代码显式调用的,例如,如果您的代码注册为接收由某些服务提供的一些回调,这将非常有用。
https://stackoverflow.com/questions/44674163
复制相似问题