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

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

15.02.2012, 12:53. Показов 21602. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru