Связывание с 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
без цифры