如何在 Bazel 中静态链接系统库?

2023-12-21

如何在大多数静态模式下静态链接系统库(linkstatic=1)?我尝试使用“-Wl,-Bstatic -lboost_thread -Wl,-Bdynamic”或“-Wl,-Bstatic”,“-lboost_thread”,“-Wl,-Bdynamic”,但它们都不起作用。我不想在系统中硬编码 libboost_thread.a 的路径。

cc_binary(
    name = "main",
    srcs = [
        "main.cpp",
    ],
    linkopts = [
        "-lboost_thread",
    ],
)

并且 boost_thread 库作为动态库链接。

ldd bazel-bin/main
linux-vdso.so.1
libboost_thread.so.1.54.0 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.54.0
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6
...

在您的 WORKSPACE 文件中定义一个外部存储库...

new_local_repository(
    name = "boost_thread",
    path = "/usr/lib/x86_64-linux-gnu",
    build_file = "boost_thread.BUILD"
)

创建boost_thread.BUILD文件

cc_library(
   name = "lib",
   srcs = ["libboost_thread.a"],
   visibility = ["//visibility:public"],
)

然后在你的 cc_binary 规则中添加

deps = ["@boost_thread//:lib",],

并投入一个

linkstatic = 1

为了安全起见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Bazel 中静态链接系统库? 的相关文章

随机推荐