bazel cc_binary()创建没有任何符号的.so文件是因为在构建过程中缺少了链接器的选项。链接器负责将目标文件中的符号解析为最终的可执行文件或共享库。在使用bazel的cc_binary()规则时,需要确保在BUILD文件中正确设置了链接器选项。
要创建一个具有符号的.so文件,可以在BUILD文件中使用cc_library()规则来定义一个共享库目标,并将其链接到cc_binary()规则中。cc_library()规则将源文件编译为目标文件,并生成具有符号的共享库文件。
以下是一个示例的BUILD文件:
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)。
领取专属 10元无门槛券
手把手带您无忧上云