Связывание с libtcmalloc ubuntu

Я установил пакет libtcmalloc-minimal0

но когда я пытаюсь скомпилировать мою программу с флагом

-ltcmalloc-minimal0

Я получаю ошибку

/usr/bin/ld: невозможно найти -ltcmalloc_minimal0

Я проверил /usr/lib и библиотека там

Больше информации

дпкг дает следующее о / п

dpkg -L libtcmalloc-minimal0
/.
/usr
/usr/lib
/usr/lib/libtcmalloc_minimal.so.0.0.0
/usr/lib/libtcmalloc_minimal_debug.so.0.0.0
/usr/share
/usr/share/doc
/usr/share/doc/libtcmalloc-minimal0
/usr/share/doc/libtcmalloc-minimal0/TODO
/usr/share/doc/libtcmalloc-minimal0/AUTHORS
/usr/share/doc/libtcmalloc-minimal0/copyright
/usr/share/doc/libtcmalloc-minimal0/changelog.gz
/usr/share/doc/libtcmalloc-minimal0/README.gz
/usr/share/doc/libtcmalloc-minimal0/changelog.Debian.gz
/usr/lib/libtcmalloc_minimal.so.0
/usr/lib/libtcmalloc_minimal_debug.so.0

и я компилирую для 64-битного режима

и библиотека тоже 64 битная

file  /usr/lib/libtcmalloc_minimal.so.0.0.0
/usr/lib/libtcmalloc_minimal.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

2 ответа

Решение

Вы не можете просто связать файл с -l если это не заканчивается точно .soпоскольку компоновщик предполагает определенное соглашение об именах (lib*.so).

У вас есть несколько вариантов:

  • устанавливать libtcmalloc-minimal0-dev если он существует, который должен обеспечить .so динамическая ссылка.

  • Создайте символическую ссылку самостоятельно: cd /usr/lib; ln -s libtcmalloc_minimal.so.0.0.0 libtcmalloc_minimal.so; cd -

  • Ссылка непосредственно на библиотеку без символической ссылки с помощью gcc test.c /usr/lib/libtcmalloc_minimal.so.0.0.0

  • Ссылка с использованием -l вариант с использованием полного имени: -l:libtcmalloc_minimal.so.0.0.0

Бег dpkg -L libtcmalloc-minimal0 покажет вам, что библиотека /usr/lib/libtcmalloc_minimal.so.0 поэтому правильный вариант должен быть -ltcmalloc_minimal без цифры

Другие вопросы по тегам