gcc bazel linkshared选项创建一个大型共享库

3ks5zfa0  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(176)

我正在使用bazel来构建一个共享库,但是输出的文件大小比预期的要大得多;为了比较,我也在BUILD文件中构建了一个具有相同deps和src的二进制文件,二进制文件的输出大小要小得多;代码示例:

cc_binary(
   name = "server",
   srcs = ["server.cc"],
   deps = [...]
)  # the binary

cc_binary(
   name = "libs.so",
   srcs = ["server.cc"],
   deps = [...],
   linkshared = 1
)   # the shared library

libs.soserver大约5倍;似乎linkshared选项将deps中的所有符号打包到共享库中,包括未使用的函数、变量(nm显示libs.so包含的符号比server多得多);如何将所需的符号链接到共享库?

qjp7pelc

qjp7pelc1#

好吧,如果你正在编译一个共享库,那么就没有“未使用的函数”这回事了。你正在创建一个库,其中包含可执行文件可以使用的函数。

相关问题