程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了bazel build 找不到共享库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决bazel build 找不到共享库?

开发过程中遇到bazel build 找不到共享库的问题如何解决?下面主要结合日常开发的经验,给出你关于bazel build 找不到共享库的解决方法建议,希望对你解决bazel build 找不到共享库有所启发或帮助;

我有这个简单的目录结构:

.
├── main
│   ├── BUILD
│   └── future.cpp
└── WORKSPACE

其中BUILD文件如下:

package(default_visibility = ["//visibility:public"])

cc_binary(
    name = "future",srcs = [
        "future.cpp"
    ],copts = [
        "-std=c++1z"
    ],linkopts = [
        "-lfolly"
    ]
)

当我运行命令 bazel build //main:future 时,我收到以下错误消息

INFO: Analyzed target //main:future (1 packages loaded,2 targets configured).
INFO: Found 1 target...
ERROR: /home/turtle/projects/miscellaneous/test/cpp/future/main/BUILD:3:10: linking of rule '//main:future' Failed (Exit 1): gcc Failed: error execuTing command /usr/bin/gcc @bazel-out/k8-fastbuild/bin/main/future-2.params

Use --sandBox_deBUG to see verbose messages from the sandBox gcc Failed: error execuTing command /usr/bin/gcc @bazel-out/k8-fastbuild/bin/main/future-2.params

Use --sandBox_deBUG to see verbose messages from the sandBox
/usr/bin/ld.gold: error: cAnnot find -lfolly

我确保在 libfolly.so 下有一个 /usr/local/lib,并且我可以使用 g++ main/future.cpp -std=c++1z -lfolly -lboost_context 进行良好的编译,所以我不确定为什么会发生这个错误。有什么我在这里遗漏的吗?

解决方法

默认情况下,Bazel 喜欢使用 gold linker 而不是 GNU ld。与 GNU ld 不同,gold 不会将 /usr/local/lib 放在默认库搜索路径上。这可以通过将 --linkopt=-L/usr/local/lib 传递给 Bazel 来修复。

大佬总结

以上是大佬教程为你收集整理的bazel build 找不到共享库全部内容,希望文章能够帮你解决bazel build 找不到共享库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:bazelbuild