LINUX.ORG.RU

Как установить библиотеку? (Нуб)

 , ,


0

3

Написал для себя реализацию списков на C: https://gitlab.com/bergentroll/lists. Хочу установить её в систему, чтобы #include <lists.h>, и всё компилялось. Ума не хватает. Как это реализовать? Собрал в статическую библиотку, положил в /usr/lib, хедер в /usr/include, компоновщик не видит библиотеку, если руками ему не показать.

Deleted

realizing

implementing. Алсо, раз уж ловишь плохие случаи, делай аборт вместо эксита, так в отлалчике будет виден бактрейс, а не просто факт выхода.

компоновщик не видит библиотеку, если руками ему не показать.

Что ты имеешь ввиду, что надо -llists передавать, чтобы он подцепил /usr/lib/liblists.so? Тогда так должно быть; автоматом только libc.so подтягивается. Как обычно — пиши что есть, что ожидал, что происходит. Без этого гадать никто не будет.

anonymous ()

PS: а вообще-то всё уже украдено до вас: sys/queue.h — стандартная имплементация различных связанных списков, которые и быстрее и эффективней. (Оригинал тут и более полный, чем огрызок коротый портировали в линукс)

beastie ★★★★★ ()

Попробуй посмотреть на вывод gcc --print-search-dirs, там должны быть пути, по которым он будет библиотеки искать(ЕМНИП, это при сборке gcc задать можно). Врядли проблема в этом, но всё же

Deleted ()

А надо статическую библиотеку в системные пути? Она на то и статическая, что нужный код из неё будет намертво влинкован в исполняемый файл. Дальше её можно не распространять. И в линуксе не любят статические библиотеки, потому что разные исполняемые файлы надуты одинаковым машинным кодом. Если в коде статической библиотеке проблема, придется пересобирать все приложения, с которыми она компилировалась.

А вообще рекомендую освоить cmake или аналог.

Archer73 ()
Ответ на: комментарий от Archer73

cmake

Не надо.

Лучше уж пусть голые мейкфайлы пишет, из них хотя бы можно процесс сборки восстановить и руками собрать, в отличие от этого говна, которое все равно нигде кроме линукса не работает как надо. Хотели/получилось.

anonymous ()

Суть вопроса — что нужно делать, чтобы потом подключать библиотеку при помощи #include <lists.h> и компилять без дополнительных ключей. Makefile не положил, так как ещё не определился, что конкретно надо мейкать.

Deleted ()
Ответ на: комментарий от Deleted

подключать библиотеку при помощи #include <lists.h> и компилять без дополнительных ключей

Так не бывает. Единственное исключение - ВЕСЬ код библиотеки находится в lists.h (безо всяких .c файлов).

cdslow ()
Ответ на: комментарий от Deleted

А как это работает со стандартной библиотекой?

Стандартная библиотека на то и стандартная, компилятор «знает», что она нужна всем, поэтому подключает её автоматически.

cdslow ()