首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bazel cc_binary()创建没有任何符号的.so文件?

bazel cc_binary()创建没有任何符号的.so文件是因为在构建过程中缺少了链接器的选项。链接器负责将目标文件中的符号解析为最终的可执行文件或共享库。在使用bazel的cc_binary()规则时,需要确保在BUILD文件中正确设置了链接器选项。

要创建一个具有符号的.so文件,可以在BUILD文件中使用cc_library()规则来定义一个共享库目标,并将其链接到cc_binary()规则中。cc_library()规则将源文件编译为目标文件,并生成具有符号的共享库文件。

以下是一个示例的BUILD文件:

代码语言:txt
复制
cc_library(
    name = "my_library",
    srcs = ["my_source_file.cc"],
    hdrs = ["my_header_file.h"],
    visibility = ["//visibility:public"],
)

cc_binary(
    name = "my_binary",
    srcs = ["main.cc"],
    deps = [":my_library"],
)

在这个示例中,cc_library()规则定义了一个名为my_library的共享库目标,它包含了my_source_file.cc和my_header_file.h。cc_binary()规则定义了一个名为my_binary的可执行文件目标,它依赖于my_library共享库。

通过这样的设置,bazel将会正确地链接共享库中的符号,从而创建一个具有符号的.so文件。

推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云容器服务(TKE)。

  • 腾讯云云服务器(CVM):提供高性能、可扩展的云服务器实例,适用于各种计算场景。详情请参考:腾讯云云服务器
  • 腾讯云容器服务(TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群。详情请参考:腾讯云容器服务
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • [Bazel]自定义工具链

    本文会讲述 Bazel 自定义工具链的两种方式,Platform 和 Non-Platform 方式。会存在这两种方式的原因是 Bazel 的历史问题。例如,C++ 相关规则使用 --cpu 和 --crosstool_top 来设置一个构建目标 CPU 和 C++ 工具链,这样就可以实现选择不同的工具链构建 C++ 项目。但是这都不能正确地表达出“平台”特征。使用这种方式不可避免地导致出现了笨拙且不准确的构建 APIs。这其中导致了对 Java 工具链基本没有涉及,Java 工具链就发展了他们自己的独立接口 --java_toolchain。因此非平台方式(Non-Platform)的自定义工具链实现并没有统一的 APIs 来规范不同语言的跨平台构建。而 Bazel 的目标是在大型、混合语言、多平台项目中脱颖而出。这就要求对这些概念有更原则的支持,包括清晰的 APIs,这些 API 绑定而不是分散语言和项目。这就是新平台(platform)和工具链(toolchain) APIs 所实现的内容。

    03
    领券