Bazel: Dynami c связь с библиотекой не работает - PullRequest
0 голосов
/ 23 января 2020

У меня есть двоичный файл, который связан с несколькими библиотеками. Я добавил linkstatic = False для этого двоичного файла, чтобы библиотеки были динамически связаны (связаны с * .so вместо * .a).

Правило выглядит примерно так:

cc_binary(
    name = "intfmgr",
    srcs = [
            "intfmgr.cc",
            "intfmgr.hh",
.....
    ],
    deps = [
....
            "//optics:optics",
    ],
    linkstatic = False,
    visibility = ["//visibility:public"],
)

Проблема в том, что intfmgr связывается с liboptics_Sliboptics.so вместо liboptics.so, и поэтому не может найти его.

$ ldd intfmgr | grep optics
        liboptics_Sliboptics.so => not found

Вот правило cc_library для liboptics.

cc_library(
    name = "optics",
    srcs = ["optics.cc"],
    hdrs = ["optics.hh"],
    deps = ["//infra/process:proc_infra"],
    visibility = ["//visibility:public"],
)

Зачем intfmgr связываться с liboptics_Sliboptics.so? Из других ссылок на intfmgr я вижу, что имя библиотеки содержит строку пути относительно рабочей области.

$ ls WORKSPACE 
WORKSPACE
$ ls optics/BUILD 
optics/BUILD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...