Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Подключение библиотек в C++  (Прочитано 7860 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RinOS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Подключение библиотек в C++
« : 23 Май 2011, 15:35:55 »
Всем привет!

Понадобилось как то портировать программу с винды на линукс, пара дней мучений и у меня получилось...
Но остался не ясным один вопрос в винде я подключал библиотеки просто прописывая путь к lib-файлу, а в линуксе (подключение GLUT) написал так:
LIBS += -L/lib/ -lglut \
-lglut откуда берутся эти имена, где хранятся, где посмотреть их, где почитать?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #1 : 23 Май 2011, 15:50:53 »
-lname - подключить библиотеку libname.so. Если не найдется, тогда libname.a. Если задан ключ -static, сразу искать .a
Файл искать в стандартных путях (/lib /usr/lib .... еще какие-то, от системы зависит)
Если добавить ключ -Wl,--verbose  (именно так, с запятой), то линкер напишет, какие файлы он ищет и где.

-L - задать дополнительный путь для поиска библиотек.

Все это описано в документации к GCC.
http://gcc.gnu.org/

Если линкуем статически, то важен порядок задания библиотек, подробности тут:
http://users.actcom.co.il/~choo/lupg/tutorials/libraries/unix-c-libraries.html#deeper_linking_understanding
« Последнее редактирование: 23 Май 2011, 16:00:53 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн alecn2002

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #2 : 26 Май 2011, 17:57:42 »
LIBS += -L/lib/ -lglut \

Где лежат конкретные библиотеки можно посмотреть при помощи системной утилиты конфигурации динамических библиотек:

# ldconfig -p | grep -i 'stdc++'
libstdc++.so.6 (libc6) => /usr/lib/i386-linux-gnu/libstdc++.so.6

Оффлайн RinOS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #3 : 28 Июнь 2011, 17:55:23 »
Снова столкнулся с проблемой...
Не знаю что писать для того что бы подключить либы.
Библиотека PCL.

Выполнил ldconfig -p | grep -i 'pcl' вот что вывела команда:

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #4 : 28 Июнь 2011, 18:11:36 »
"Ма-ма моя!"(ц)
Вы так и не нашли, что ли, никаких источников информации о повторно используемом коде?

Библиотеки подключают для того, чтобы использовать какие-то функции, описанные в них.
Вам какие функции нужны?

Да, и надо было скопировать текст, а не делать снимок окна терминала. Ну, это так, к слову.
 
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн RinOS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #5 : 28 Июнь 2011, 18:21:51 »
Есть либа libpcl_io.so с помощью мастера Qt добавил таки... получилось вот что:

LIBS += -L/usr/lib/ -lpcl_io

Я все понимаю, и повторно используемый код, и то что директорию нужно прописывать где либа лежит. но блин как в линуксе формируются имена которые надо написать в проект для меня остается загадкой pcl_io вот откуда оно взялось?

Имя файла libpcl_io.so я собственно так и писал путь и libpcl_io но как оказалось надо было писать просто pcl_io

Да, и надо было скопировать текст, а не делать снимок окна терминала. Ну, это так, к слову.
так нагляднее
« Последнее редактирование: 28 Июнь 2011, 18:49:40 от RinOS »

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #6 : 28 Июнь 2011, 18:54:51 »
... но блин как в линуксе формируются имена которые надо написать в проект для меня остается загадкой pcl_io вот откуда оно взялось? ...

...
Все это описано в документации к GCC.
http://gcc.gnu.org/
...

Как думаешь люди тут сами с собой разговаривают?

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #7 : 28 Июнь 2011, 18:57:03 »
но блин как в линуксе формируются имена которые надо написать в проект для меня остается загадкой pcl_io вот откуда оно взялось?
Имя файла libpcl_io.so я собственно так и писал путь и libpcl_io но как оказалось надо было писать просто pcl_io

Я Вам на этот вопрос еще месяц назад ответил, первой же строкой своего сообщения.

Еще раз: ключ -lname означает, что надо найти и открыть файл libname.so

Разжевываю - приклеить спереди к строке "name" строку "lib" (три буквы "l", "i", "b"), а после name - строку ".so" (точку и буквы "s" и "o").
Полученный результат склеивания строк считать именем файла, который должен находиться в одной из заранее определенных директорий.

Если libname.so не найдется, поискать libname.a и включить его в результат целиком.
Если присутствует ключ -static, сразу искать файл libname.a

Ключ -L/path/to/libs задает линкеру дополнительные пути для поиска библиотек, в /usr/lib и /lib он и так полезет.

Все, что написано про ldconfig, к компиляции не относится.
« Последнее редактирование: 28 Июнь 2011, 19:02:19 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн RinOS

  • Автор темы
  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #8 : 29 Июнь 2011, 11:35:23 »
Разжевываю

Уфф теперь немного прояснилось.

в faq искал, но ответа на этот вопрос не нашел... да и вообще довольно сложно понимается что там написано.

Онлайн SergeyIT

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 4362
  • Все по палатам!
    • Просмотр профиля
Re: Подключение библиотек в C++
« Ответ #9 : 29 Июнь 2011, 12:05:45 »
в faq искал, но ответа на этот вопрос не нашел...
Прочитайте хотя бы это http://www.firststeps.ru/linux/
Извините, я все еще учусь

Evil Beaver

  • Гость
Re: Подключение библиотек в C++
« Ответ #10 : 01 Июль 2011, 09:35:43 »
в faq искал, но ответа на этот вопрос не нашел...
Прочитайте хотя бы это http://www.firststeps.ru/linux/

А вот за это спасибо!

 

Страница сгенерирована за 0.086 секунд. Запросов: 24.