如何解决bazel 构建:无法链接外部非 bazel 共享库
我第一次尝试使用 Bazel。我正在尝试使用 Bazel-3.7.2 构建一个共享库。共享库具有外部非 Bazel 库依赖项。 Bazel 构建后,我得到了新的共享库“.so”文件。但是使用 ldd 我找不到外部依赖。
WORKSPACE 文件如下所示。这里的libxed.so是extern共享库。
# xed library
new_local_repository(
name = "libxed",path = "dependencies/xed/kits/xed-install-base",build_file_content = """
cc_library(
name = "libxed",srcs = ["lib/libxed.so"],hdrs = glob([
"include/xed/*.h",]),visibility = ["//visibility:public"],)
""",)
# xed header files
new_local_repository(
name = "libxed_headers",path = "dependencies/xed/kits/xed-install-base/include/xed",build_file_content = """
cc_library(
name = "xed",hdrs = glob([
"*.h",)
构建文件:
load("@rules_cc//cc:defs.bzl","cc_binary","cc_library")
cc_library(
name = "themis",srcs = glob(
["src/main.cpp","src/tools/Themis/*.cpp",],),hdrs = glob([
"includes/tools/Themis/mytool.hpp",strip_include_prefix = "includes",linkopts = ["-pthread","-lrt","-lunwind","-ldl"],deps = [
"@libxed_headers//:xed","@libxed//:libxed",)
构建库后,它会创建 libthemis.so。
ldd bazel-bin/libthemis.so
linux-vdso.so.1 (0x00007ffe410ab000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f70e7de8000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f70e7a4a000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f70e7842000)
libunwind.so.8 => /usr/lib/x86_64-linux-gnu/libunwind.so.8 (0x00007f70e7627000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f70e7423000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f70e7204000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f70e6e13000)
/lib64/ld-linux-x86-64.so.2 (0x00007f70e8171000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f70e6bfb000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f70e69d5000)
这里的 libthemis.so 不包括 libxed.so。请注意,我可以使用 Cmake 正确构建 Themis 库。如何修复 Bazel 构建?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。