LINUX.ORG.RU

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

 , ,


0

3

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

Deleted

Как собирал библиотеку и приложение нам самим догадаться?

slovazap ★★★★★
()
Последнее исправление: slovazap (всего исправлений: 2)

realizing

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

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

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

anonymous
()

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

а бывает как-то иначе?

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

Чот всегда казалось, что это loader / link editor, ну про вторую букву.

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

Вообще-то для таких вещей всегда было /usr/local/lib и /usr/local/include

beastie ★★★★★
()

Глупый вопрос, но где Makefile?

beastie ★★★★★
()

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

beastie ★★★★★
()
Ответ на: комментарий от wolph

Нативные для данной архитектуры/платформы вроде в $prefix/lib лежат

Deleted
()

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

Deleted
()

В репе не увидел как оно собирается. Не в имени библиотеки ли косяк?

Deleted
()

Последнее предположение: ld сам вызываешь или gcc дёргает?

Deleted
()

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

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

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

cmake

Не надо.

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

anonymous
()

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

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

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

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

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

Да там 2 файла всего. lists.h и lists.c. Перетащи их в проект и всё, какие проблемы?

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

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

Перетащи их в проект и всё, какие проблемы?

Проблем нет, просто разобраться хочу.

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

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

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

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

Понял, спасибо. Вопрос, вроде как, исчерпан=)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.