Связывание зависимостей разделяемой библиотеки, отсутствующее в ldd - PullRequest
0 голосов
/ 23 мая 2018

Есть библиотека, которая скомпилирована против -lyaml.Но libyaml.so не включается в список зависимостей ldd.Сборка происходит успешно с использованием цепочки инструментов autoconf.

$ nm libxxxx.so | grep -i yaml
 U yaml_document_delete
 U yaml_document_get_node
 U yaml_parser_delete
 U yaml_parser_initialize
 U yaml_parser_load
 U yaml_parser_set_input_file


$ readelf -d libxxxx.so
    Tag        Type                         Name/Value
    0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
    0x000000000000000e (SONAME)             Library soname: [libxxxx.so.0] 

Существует еще одна общая библиотека, которая зависит от libxxxx.so.

$ ldd  lib/libxxxx1.so
    libzmq.so.5 => /usr/lib/x86_64-linux-gnu/libzmq.so.5 (0x00007fd45e072000)
    libxmaapi.so.0 => 

Когда я связываю свой исполняемый файл с libxxxx1.so, он выдает ошибку неопределенных символов.Вопрос в том, как связать библиотеку, не найденную в дереве зависимостей?

Этот вопрос предоставляет подходы к игнорированию проблемы. Связывание с динамической библиотекой с зависимостями

1 Ответ

0 голосов
/ 24 мая 2018

Один из подходов, который я обнаружил, - отключение оптимизации с помощью флага gcc -Wl, - по необходимости.Поскольку я уже связываю с помощью -lyaml, символы разрешаются.Это работает, но не эффективно.

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