Я должен связаться с частью общей библиотеки Повышения (.so
) файлы. Я установил повышение путем выполнения
sudo apt-get install libboost-all-dev
Заголовочные файлы и статические библиотеки установлены правильно. Общие библиотеки также установлены однако, они не содержат символов.
$ nm /usr/lib/x86_64-linux-gnu/libboost_filesystem.so
nm: /usr/lib/x86_64-linux-gnu/libboost_filesystem.so: no symbols
Как это возможно и как я могу зафиксировать его? Я понимаю, что это - неопределенная проблема, но я попробовал apt-get clean
и полностью удаляя и производя чистку всего повышения debian пакеты и переустанавливая и я всегда получаю тот же результат. Компиляция Повышения из источника и установка отдельной версии не идеальны.
Большинство общих библиотек, установленных из репозиториев Ubuntu, не содержит символы. Пакеты обычно создаются с отладочными символами, которые тогда разделяются и помещаются в отдельно устанавливаемые пакеты для использования с gdb
или другие отладчики.
, Если Вы хотите видеть символы в общей библиотеке динамическая таблица символов , которые являются общедоступными символами, которые могут быть связаны с, используйте nm -D
вместо всего nm
.
У меня была та же самая проблема с другой библиотекой (libcudart.so). Я решил его пользующийся статическим '.a' библиотека.
, Что я сделал:
$ find /usr/local/cuda-7.0 -type f -name libcudart\*
directory/libcuda_static.a
$ compiler -Ldirectory -lcudart_static
я надеюсь, что это помогает кому-то