bazel запустить немедленно Ошибки сегментации

Я пытаюсь использовать локально созданный пакет (этот) в существующем проекте bazel. Он строится без ошибок, но когда я пытаюсь запустить его, он сразу перестает работать. Я попытался создать его в режиме отладки, но когда я запустил его в режиме отладки, он по-прежнему сразу выдает ошибку без каких-либо полезных сообщений об ошибке.

Я создал внешний пакет, следуя инструкциям в README, и примеры работают нормально (за пределами 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;
}

person cmoses    schedule 29.07.2020    source источник


Ответы (1)


Я нашел свои ошибки. Во-первых, я многое менял и забыл пересобрать внешний пакет, поэтому библиотек не было ... ой.

Но что более важно, когда внешний пакет собран, он выводит файлы библиотеки с расширениями файлов, отличными от .o и .so, поэтому мне пришлось изменить следующую строку в cc_library цели

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

Надеюсь, это поможет кому-то в будущем !!

person cmoses    schedule 29.07.2020