Нет символов в libvolk.so

Я использую volk в некоторых наших внутренних компонентах, если библиотека volk обнаружена в системе. Я знаю, что GNUHawk упаковывает версию volk в папку deps внутри SDRROOT. Мы только что создали новый образ Linux с CentOS 6.6 и Redhawk 1.10.0-10, установленными из пакетов RPM, доступных в Интернете. Раньше мы собирали gnuhawk из исходников. При запуске наших пользовательских компонентов мы получаем ошибки поиска символов из-за того, что таблица символов была удалена из libvolk, упакованного с RPM-версией gnuhawk.

Каков предлагаемый способ решения этой проблемы? Должны ли мы создать другую зависимость softpackage с нашей собственной версией libvolk вместо использования gnuhawk libvolk?


person Sir Bedevere    schedule 19.11.2014    source источник


Ответы (1)


У вас не должно возникнуть проблем с использованием общих объектов volk, упакованных с помощью gnuhawk, но мне нужно получить больше информации, чтобы точно знать, что происходит. Я предполагаю, что вы можете компилировать системную установку libvolk, а затем запускать версию gnuhawk, что может вызвать проблему поиска символов.

Убедитесь, что вы компилируете и связываете файлы volk в SDRROOT. Вы должны иметь возможность использовать файл pc ($SDRROOT/sdr/dom/deps/gnuhawk/lib/pkgconfig/volk.pc) для автоматической настройки флагов CXX и LD с помощью autotools.

Вы можете увидеть символы внутри объекта libvolk, используя readelf. Используйте readelf -s для общего объекта libvolk.so.0.0, и он должен распечатать таблицу символов. Затем вы можете подтвердить, что рассматриваемый символ отсутствует, и начать поиск того, как вы были связаны с этим символом в первую очередь.

Конечно, вы можете создать свою собственную библиотеку общих объектов с вашими заголовками volk и общими объектами. Это дает вам возможность обновлять volk и избавляет вас от зависимости от gnuhawk.

person Youssef Bagoulla    schedule 24.11.2014
comment
При использовании readelf он не возвращает символы. Вы можете видеть, что в файле .so, установленном в RPM-установке GNUHAWK, нет записи .symtab. Это происходит из-за того, что некоторые машины для разработки собирают GNUHAWK из исходного кода, а другие просто используют версию RPM. Я надеялся избежать установки дополнительной зависимости и просто использовать GNUHAWK. По вашему мнению, имеет ли смысл в долгосрочной перспективе просто создать собственную версию и упаковать ее с нашими компонентами? - person Sir Bedevere; 25.11.2014