Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/107: Рейтинг темы: голосов - 107, средняя оценка - 4.97
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772

Как подключить стороннюю библиотеку (*.so) к проекту

15.02.2012, 12:53. Показов 21701. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вопрос про подключение сторонних библиотек к проекту.
У меня есть библиотека aaa.so, header файл bbb.h, и код, который использует функции из этой библиотеки... Как ее задействовать?

Добавлено через 46 минут
Среда разработки Eclipse, язык C++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2012, 12:53
Ответы с готовыми решениями:

Как в проект подключить библиотеку?
Есть компилятор GCC и графическая библиотека, как ее можно подключить? Компилю через консоль.

Подключить стороннюю NDK-библиотеку к своему NDK-проекту
Пытаюсь подключить к своему (на самом деле не совсем своему) NDK-проекту стороннюю библиотеку libpng (http://www.libpng.org). Содержимое...

Как подключить к проекту стороннюю программу?
Допустим я пишу программку на С++, и мне надо чтобы она взаимодействовала с другой программой (допустим cmd) Как это реализовать?

18
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
15.02.2012, 16:58
гуглить на предмет ключика "-l"
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
15.02.2012, 18:29  [ТС]
Цитата Сообщение от niXman Посмотреть сообщение
гуглить на предмет ключика "-l"
в моем случае у меня есть библиотека в виду трех файлов:
1. libSUSI-3.02.so (link);
2. libSUSI-3.02.so.1 (Soname);
3. libSUSI-3.02.so.1.0.8 (real name);

они находятся в /usr/lib

Кто-нибудь может прокомментировать, почему одна библиотека представлено в виде трех этих файлов?
Я догадываюсь, что тут может быть особенность подключения...
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
15.02.2012, 20:08
Цитата Сообщение от sitesv Посмотреть сообщение
1. libSUSI-3.02.so (link);
2. libSUSI-3.02.so.1 (Soname);
это ссылки на libSUSI-3.02.so.1.0.8, созданные для совместимости

Добавлено через 8 минут
Цитата Сообщение от sitesv Посмотреть сообщение
Как ее задействовать?
тебе надо будет скомпилировать файл в gcc с опцией:
Bash
1
gcc -o имя_программы исходник.c -lSUSI-3.02
Где -lSUSI-3.02 - это имя библиотеки (без lib и .so). Часть имени .so в файле библиотеки говорит, что это динамическая библиотека.

про подключение библиотек
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.02.2012, 20:33
Цитата Сообщение от niXman Посмотреть сообщение
гуглить на предмет ключика "-l"
Цитата Сообщение от remarkes Посмотреть сообщение
тебе надо будет скомпилировать файл в gcc с опцией
Человек спрашивает, как из Eclipse их использовать, а не из командной строки

Цитата Сообщение от sitesv Посмотреть сообщение
Кто-нибудь может прокомментировать, почему одна библиотека представлено в виде трех этих файлов?
Файл *.so используется линкером в процессе запуска компилятора. Т.е. линкер вынимает некоторую информацию и кладёт её в полученный исполняемый файл. В частности, в исполняемый файл кладётся информация о том, что такая-то динамическая библиотека нужна для исполнения. В данном *.so записано, что для исполнения получившегося бинарника потребуется файл libSUSI-3.02.so.1 (это так называемый SONAME). В процессе запуска бинарника будет использоваться именно это имя файла. Ну а файл libSUSI-3.02.so.1.0.8 - это конкретная реализация. Может случиться так, что разработчики исправят ошибку в библиотеке, но оставят неизменным интерфейс. Тогда они отдадут тебе файл libSUSI-3.02.so.1.0.9, а ссылка 3.02.so.1 начнёт смотреть на новый файл. Таким образом свою программу тебе не придётся пересобирать. При очередном запуске через ссылку libSUSI-3.02.so.1 она в момент исполнения подцепит новую версию библиотеки libSUSI-3.02.so.1.0.9. Далее разработчики выпустят новую версию библиотеки с новыми интерфейсами. Тогда они назовут её libSUSI-3.02.so.2.0.0 и рядом положат ссылку libSUSI-3.02.so.2, а ещё и перенастроят libSUSI-3.02.so. В этом случае при перекомпиляции программы у тебя подцепится новая версия библиотеки. Но уже существующие бинарники в момент исполнения через libSUSI-3.02.so.1 по прежнему будут цеплять старую версию, потому что не факт, что с новой версией оно будет работать нормально из-за изменённых интерфейсов или сильно изменённой внутренней реализацией. Таким образом у тебя в системе могут жить несколько версий одной и той же динамической библиотеки
1
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
15.02.2012, 21:41
Цитата Сообщение от Evg Посмотреть сообщение
как из Eclipse их использовать
задать вопрос на форуме поддержки эклипса? не?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.02.2012, 22:07
Цитата Сообщение от niXman Посмотреть сообщение
задать вопрос на форуме поддержки эклипса? не?
Если есть желание поучить человека правильно задавать вопросы - попробуй. Я всего лишь указал на то, что человек задавал один вопрос, а отвечали ему на другой
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
15.02.2012, 22:35
Цитата Сообщение от Evg Посмотреть сообщение
задавал один вопрос, а отвечали ему на другой
айдишек - гребанный вагон и тележка, а GCC - один!
я вообще вопрос посчитал шуткой) разве стал бы кто-то спрашивать про линковку с .so в эклипсе, когда он умеет это делать просто в ручную, да еще и в разделе С++ + линукс связь какая-то ооочень отдаленная от тематики раздела.

более того, я вообще считаю что обсуждение айдишек не имеет ничего общего с программированием. этим темам самое место в обсуждении софта.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.02.2012, 22:45
Цитата Сообщение от niXman Посмотреть сообщение
я вообще считаю что обсуждение айдишек не имеет ничего общего с программированием
Я тоже так считаю. Но это вовсе не означает, что все так считают. Если человек пришёл с вопросом на форум - значит он явно что-то не знает. Если человек работает в IDE, то он скорее всего не умеет работать с командной строкой, а потому не надо его этим грузить (да и не нужно оно ему на данном этапе, т.к. он ищет ответ на свой вопрос). Люди, работающие в IDE, далеко не всегда знают, где граница между IDE и компилятором, или в чьей зоне ответственности лежит вопрос: в зоне ответственности IDE, компилятора, операционной системы или где-то ещё. Он программирует на Си++ под линуксом, вот и зашёл в правильный по его мнению раздел форума. Я бы тоже сюда зашёл
1
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
15.02.2012, 23:39  [ТС]
Спасибо за помощь, завтра обязательно попробую и отпишу!
0
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
16.02.2012, 10:38
Цитата Сообщение от Evg Посмотреть сообщение
Человек спрашивает, как из Eclipse их использовать, а не из командной строки
ой, а я подумал - это подпись пользователя
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
17.02.2012, 13:14  [ТС]
Спасибо большое! Все заработало! Ура-Ура-Ура!
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
17.02.2012, 14:17
Цитата Сообщение от sitesv Посмотреть сообщение
Спасибо большое! Все заработало! Ура-Ура-Ура!
Для истории поделись, что конкретно ты сделал. Другим это может оказаться полезным
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
17.02.2012, 14:47  [ТС]
из-за своей неопытности, в настройках проекта я подключал библиотеку libSUSI-3.02.so, а надо было, как Вы подсказали, SUSI-3.02.

Спасибо огромное!
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
12.05.2012, 08:55  [ТС]
Доброго дня!
Столкнулся с проблемой...
В случае удаленной отладки с использованием библиотеки SUSI-3.02 (а именно при запуске программы Remote System Manager'ом) возникает ошика
C++
1
Thread [1] 1645 (Suspended: Signal: SIGILL: Illegal instruction)
Давно уже не юзал проект с внешней библиотекой... Тут решил реанимировать проект.
Произошло это после того, как я перезаписал находящиеся библиотеки в /usr/lib
(устанавливал библиотеки командой make install: которая значала удаляет их из папки /usr/lib, а потом из исходного каталога с библотекой копирует их туда же).
Не могу никак закрыть этот баг...
Если в настройках проекта убрать подключение SUSI-3.02 и, соответственно, закомментировать все вызываемые из нее функции, то проект нормально удаленно запускается..
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.05.2012, 10:13
Для очистки совести попробуй перекомпилировать проект. А то мало ли новая версия библиотеки в чём-то несовместима со старой
0
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
12.05.2012, 11:12  [ТС]
Тут момент следующий отмечу:
когда делал "make install" библиотеки, появилось следующее сообщение:
"make: предупреждение: Неправильный ход часов. Сборка может быть неполной."
Что это такое и как оно может влиять на работу?

Добавлено через 8 минут
Установил системное время в биосе, распаковал по-новой архив, сделал make install. все прошло нормально.
При запуске программы, происходит ошибка инициализации библиотеки:
C++
1
SusiDllInit() failed
Раньше программка запусказалась нормально. Не подскажите в какую сторону смотреть?

Добавлено через 28 минут
Запустил на аналогичном ПК, все заработало.
Вот почему на первом ПК херня творится ((
Такое ощущение, то в системе остались "ошметки" какие-то...
Нельзя как-нибудь продиагностировать систему на этот предмет?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.05.2012, 13:39
Цитата Сообщение от sitesv Посмотреть сообщение
Что это такое и как оно может влиять на работу?
make по времени созданиф файлов определяет, нужно пересобирать модуль или нет. Т.е. если исходник имеет более позднее время обновления, чем соответствующий объектник, то пересобирать нужно. При сборке с нуля это роли не играет. При сборке поверх существующей сборки - играет роль если ты что-то модифицируешь. Ну это общий принцип на пальцах. Реально зависит от того, как Makefile написан

Цитата Сообщение от sitesv Посмотреть сообщение
Вот почему на первом ПК херня творится ((
Такое ощущение, то в системе остались "ошметки" какие-то...
Бесплатный колхоз, фигли ты думал

Цитата Сообщение от sitesv Посмотреть сообщение
Нельзя как-нибудь продиагностировать систему на этот предмет?
Много раз наблюдал стандартное заблуждение. Человек купил джип и теперь считает, что можно в говнах ездить. А то, что для этого нужно иметь соотвествующие навыки, обычно никто не задумывается до тех пор, пока за трактором не побежит. С опенсорсом всё то же самое. То, что программы в исходниках, это вовсе не означает, что первый попавшийся дурак всё с ходу соберёт. Нужно всё-таки понимать, как это устроено и что вообще ты делаешь
1
27 / 25 / 5
Регистрация: 22.04.2010
Сообщений: 772
12.05.2012, 13:54  [ТС]
Evg, стараюсь все делать осознанно...
Оказалось что-то с настройками bios, обновил их по default'у.
Все зафурычило!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2012, 13:54
Помогаю со студенческими работами здесь

Как подключить стороннюю динамическую библиотеку?
как подключить стороннюю динамическую библиотеку(написана на с++) как нюансы?

Как подключить библиотеку к проекту
Не могу понять почему не работает. Папку заголовков и папку с библиотекой выбрал, линковщику добавил cryptopp.lib, cryptopp.lib и...

Как подключить библиотеку к конкретному проекту?
Доброго времени суток:) Возникла необходимость воспользоваться пакетом Graphics32 (http://graphics32.org/wiki/), но как его подключить,...

Как подключить к проекту библиотеку, написанную на C++
Здравствуйте! Есть замечательная библиотека математических функций http://harrix.org/main/product_library_harrix_math_dll.php dll...

Как подключить библиотеку к проекту и в папку
Я знаю как подключать библиотеки, но волнует вопрос, как подключить, чтобы файл dll был в подпапке (напр. "libs"), а не в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru