![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
crafter
Форумчанин
Регистрация: 03.09.2011
Сообщений: 127
|
![]()
Скачал одну библиотеку с официального сайта, раскидал include, и .so по /usr/include, /usr/lib, /usr/lib64, пробую собрать простой пример, - линкер не находит функции, undefined reference. Пробовал собирать указывая путь к библиотеке явно:
g++ main.cpp -l:64lib/libtest.so, также пробовал компилировать с флагом -m32, и собирать с 32-х битной версией библиотеки, таже самая ошибка во время линковки. В чем может быть причита такого поведения, неужели вендор библиотеки мог предоставить неправильный .so файл? |
![]() |
![]() |
![]() |
#2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,830
|
![]() Цитата:
Цитата:
1. l указывается с именем либы, а не путем 2. so, как dll в винде, с ней не компилят |
||
![]() |
![]() |
![]() |
#3 | |
crafter
Форумчанин
Регистрация: 03.09.2011
Сообщений: 127
|
![]()
В архиве с либой, .install .readme не оказалось, и мне сказали, что достаточно будет просто установить библиотеку, как я понял просто файлы /include/, /lib/ разложить по своим директориям.
Цитата:
Код:
и собирается он: g++ main.cpp -l:/usr/lib/mesa/libGL.so. (либо -lGL, т.к. в /usr/lib лежит символьная ссылка libGL.so, которая указывает в свою очередь как раз на /usrl/lib/mesa/libGL.so ) Как можно это объяснить? Последний раз редактировалось halcyon; 10.05.2015 в 10:54. |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
![]()
С чего это вдруг? Из gcc справки:
Код:
Компановщик (ld.so) не найдет либу после простого копирования в нужный каталог. Компановщик имеет кеш, который нужно обновлять после установки либы, я использовал ldconfig. |
![]() |
![]() |
![]() |
#5 | |
crafter
Форумчанин
Регистрация: 03.09.2011
Сообщений: 127
|
![]() Цитата:
![]() А -lname указываю, когда либа или симлинк на нее находится в /usr/lib. Как я понимаю компоновщик ищет там libname по -lname. Это не так? Во всяком причина оказалась гораздо проще, в декорировании имен функций, библиотека довольно старая. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с vba (проблемы создания макросов) | Leojse | Microsoft Office Excel | 4 | 26.12.2013 20:09 |
Проблемы из-за 7-ки? | nimbus2000 | Помощь студентам | 4 | 09.02.2012 17:35 |
Проблемы с С# | PDV199003 | Помощь студентам | 0 | 04.06.2010 14:38 |
проблемы с IE | xakzona | Помощь студентам | 1 | 16.12.2008 21:53 |