bazel立即运行分段错误

时间:2020-07-29 16:40:46

标签: c++ bazel bazel-rules

我正在尝试在现有的bazel项目中使用本地构建的软件包(this one)。它的bazel构建没有任何错误,但是当我尝试执行bazel运行时,它立即出现段错误。我尝试在调试模式下构建它,但是当我在调试模式下运行它时,它仍然会立即出现段错误,而没有任何有用的错误消息。

我按照自述文件中的说明构建了外部软件包,示例运行良好(在bazel之外),所以我知道外部库不是问题。

我建立了一个存储库来访问我的WORKSPACE文件中的这个程序包

new_local_repository(
    name = "ApproxMVBB",
    path = "/absolute/path/to/ApproxMVBB",
    build_file = "approxmvbb.BUILD", )

approxmvbb.BUILD文件如下

cc_library(
    name = "ApproxMVBB-lib",
    srcs = glob(["**/*.a"])+glob(["**/*.so"]),
    hdrs = glob(["**/*.hpp"]),
    includes = ["include", "build/include", "external/Diameter/include", "external/GeometryPredicates/include"],
    visibility = ["//visibility:public"],
)

我要运行的cc_binary看起来像这样

cc_binary(
    name = "TestMVBB",
    srcs = [
        "src/test_approxmvbb.cpp",
    ],
    deps = [
        "@ApproxMVBB//:ApproxMVBB-lib",
    ],
    linkopts = ["-shared"],
)

二进制文件src/test_approvmvbb.cpp

的源代码
#include <iostream>
#include "ApproxMVBB/ComputeApproxMVBB.hpp"

int  main(int argc, char** argv)
{
      ApproxMVBB::Matrix3Dyn points(3,10000);
      points.setRandom();
      ApproxMVBB::OOBB oobb = ApproxMVBB::approximateMVBB(points,0.001,500,5,0,5);
      oobb.expandToMinExtentRelative(0.1);
      return 0;
}

1 个答案:

答案 0 :(得分:0)

我发现了我的错误。首先,我做了很多更改,却忘记了重建外部程序包,因此这些库不存在……哎呀。

但是更重要的是,在构建外部软件包时,它输出的库文件的文件扩展名不是.o.so,因此我不得不在cc_library中更改以下行目标

srcs = glob(["**/*.a"])+glob(["**/*.so"])+glob(["**/*.so.2.1.1"]),

希望这对以后的人有帮助!