Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2015, 16:32   #1
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию Проблемы с линковкой

Скачал одну библиотеку с официального сайта, раскидал include, и .so по /usr/include, /usr/lib, /usr/lib64, пробую собрать простой пример, - линкер не находит функции, undefined reference. Пробовал собирать указывая путь к библиотеке явно:
g++ main.cpp -l:64lib/libtest.so, также пробовал компилировать с флагом -m32, и собирать с 32-х битной версией библиотеки, таже самая ошибка во время линковки. В чем может быть причита такого поведения, неужели вендор библиотеки мог предоставить неправильный .so файл?
halcyon вне форума Ответить с цитированием
Старый 10.05.2015, 00:55   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
В чем может быть причита такого поведения, неужели вендор библиотеки мог предоставить неправильный .so файл?
Может стоило почитать файлы readme. install? А то может либа под avr...

Цитата:
Пробовал собирать указывая путь к библиотеке явно:
g++ main.cpp -l:64lib/libtest.so
Читаем доки:
1. l указывается с именем либы, а не путем
2. so, как dll в винде, с ней не компилят
p51x вне форума Ответить с цитированием
Старый 10.05.2015, 10:52   #3
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

В архиве с либой, .install .readme не оказалось, и мне сказали, что достаточно будет просто установить библиотеку, как я понял просто файлы /include/, /lib/ разложить по своим директориям.
Цитата:
2. so, как dll в винде, с ней не компилят
Да не компилят. Но допустим есть такой код:
Код:
#include <GL/gl.h>

int main() {    
    glBegin(GL_POINTS);
    glEnd();   
    return 0;
}
,
и собирается он: 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.
halcyon вне форума Ответить с цитированием
Старый 11.05.2015, 20:58   #4
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
2. so, как dll в винде, с ней не компилят
С чего это вдруг? Из gcc справки:
Код:
object-file-name
A file name that does not end in a special recognized suffix is considered to name an
object file or library. (Object files are distinguished from libraries by the linker according
to the file contents.) If linking is done, these object files are used as input to the linker.
halcyon, зачем указываете либу с -lname ? на выходе получите libname.a, попробуйте указывать so без -l, возможно с путём.

Компановщик (ld.so) не найдет либу после простого копирования в нужный каталог. Компановщик имеет кеш, который нужно обновлять после установки либы, я использовал ldconfig.
220Volt вне форума Ответить с цитированием
Старый 13.05.2015, 20:06   #5
halcyon
crafter
Форумчанин
 
Аватар для halcyon
 
Регистрация: 03.09.2011
Сообщений: 127
По умолчанию

Цитата:
Сообщение от 220Volt Посмотреть сообщение
halcyon, зачем указываете либу с -lname ? на выходе получите libname.a, попробуйте указывать so без -l, возможно с путём.
Нашел в сети информацию, что для указания пути либе необходимо пользоваться таким синтаксисом: -lath_to_lib/libname.so.
А -lname указываю, когда либа или симлинк на нее находится в /usr/lib. Как я понимаю компоновщик ищет там libname по -lname. Это не так?
Во всяком причина оказалась гораздо проще, в декорировании имен функций, библиотека довольно старая.
halcyon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с 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