|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.05.2015, 16:32 | #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 файл? |
10.05.2015, 00:55 | #2 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,724
|
Цитата:
Цитата:
1. l указывается с именем либы, а не путем 2. so, как dll в винде, с ней не компилят |
||
10.05.2015, 10:52 | #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. |
|
11.05.2015, 20:58 | #4 |
Форумчанин
Регистрация: 14.12.2012
Сообщений: 668
|
С чего это вдруг? Из gcc справки:
Код:
Компановщик (ld.so) не найдет либу после простого копирования в нужный каталог. Компановщик имеет кеш, который нужно обновлять после установки либы, я использовал ldconfig. |
13.05.2015, 20:06 | #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 |