Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Функции в gcc

Ответить
Настройки темы
Функции в gcc

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Привет всем! В общем, у меня проблема в gcc под Asp Linux 7.3 и 9.0. Например, я делаю #include <mysql/mysql.h>, потом вызываю функцию mysql_connect(...) , либо какую-нибуль иную. Компиляю файл, проходит нормально. А вот сборка не завершается успехом и выдается сообщение типа "Undefined reference to mysql_connect". Это же происходит и с glut'ом, SDL'ем и даже в хедерах с++(stream.h, iostream.h).
Если кто знает, что делать с этою проблемой, помогите!

-------
Дело веб-мастера боится!
Dimonweb


Отправлено: 03:28, 04-07-2004

 

Аватара для ruslandh

info man howto


Сообщения: 6958
Благодарности: 384

Профиль | Сайт | Отправить PM | Цитировать


Хорошо-бы последние строчки лога посотреть

-------
Поспешай не торопясь


Отправлено: 06:03, 04-07-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Подключения одних хедеров недостаточно. Нужно еще подключать динамическую библиотеку, в которой находятся откомпилированные функции.  Если я правильно понял, то вот такая строчка
Код: Выделить весь код
 gcc -c  test.c  
проходит и создает файл test.o. Зато
Код: Выделить весь код
 gcc -o test  test.o  
выдает указанную ошибку.
Можно попробовать сделать так:
Код: Выделить весь код
 gcc -o test -lmysqlclient test.o  
Здесь  опция -lmysqlclient указывает, что нужно подключить файл
libmysqlclient.so или libmysqlclient.a из стандартных путей (записаны в /etc/ld.so.conf).
Правда, тут есть другая проблема:
Хотя в заголовочных файлах mysql_connect присутствует, в библиотеке этой функции  нет (используя nm, можно посмотреть ее содержимое). Кроме того, в самом заголовке (по крайней мере, в моей версии) написано так:

Код: Выделить весь код
 
#ifdef USE_OLD_FUNCTIONS 
 
MYSQL *         STDCALL mysql_connect(MYSQL *mysql, const char *host, 
                                      const char *user, const char *passwd); 
/* ....  */ 
#endif
что наводит на размышления о том, что эти функции устарели (возможно, вместо них теперь нужно  использовать mysql_manager_connect или mysql_real_connect)

Кстати, о динамических библиотеках и компиляции с помощью gcc можно читать вот тут.

-------
С уважением, Figaro
http://romik.web.ur.ru


Отправлено: 12:12, 04-07-2004 | #3


Аватара для makaveli lcf

Старожил


Сообщения: 270
Благодарности: 1

Профиль | Отправить PM | Цитировать


кстати =  какие существуют способы (традиционные, если так можно выразиться) поиска библиотек, в которых находится нужная функция?
я напролом пользуюсь
grep function_name /usr/lib/lib*so*

а потом выбираю по смыслу))) просто некоторые функции встречаются в разных библиотеках (програмка использующая glut требует подключения штук трех - четырех иксовых библиотек, вот и ищешь, где что лежит)

-------
Now I know that the LORD [is] greater than all gods: for in the thing wherein they dealt proudly [he was] above them. (Exodus 18:11)


Отправлено: 09:53, 06-07-2004 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


makaveli lcf
Как вариант:
for a in [ /usr/lib/lib*.so ] ; do echo $a ; objdump -R -C $a | grep что-ищем ; done

Отправлено: 11:18, 06-07-2004 | #5


Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать



Цитата:
какие существуют способы (традиционные, если так можно выразиться) поиска библиотек, в которых находится нужная функция?
Меня самого тоже очень это интересует

Я могу только предложить еще искать не во всех .so файлах, а только в тех, которые находятся в одном пакете с заголовочными (ну, или если заголовки в packagename-devel, то библиотеки будут в packagename).

-------
С уважением, Figaro
http://romik.web.ur.ru


Отправлено: 11:37, 06-07-2004 | #6


Аватара для makaveli lcf

Старожил


Сообщения: 270
Благодарности: 1

Профиль | Отправить PM | Цитировать


Figaro
в принципе так, но когда я сделал лишь
-lglut

как потом выяснилось, потребовалось
-lXmu -lGl и так далее... но это видимо редкий случай...

-------
Now I know that the LORD [is] greater than all gods: for in the thing wherein they dealt proudly [he was] above them. (Exodus 18:11)


Отправлено: 10:07, 08-07-2004 | #7



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Функции в gcc

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
gcc in CygWin - не компилит null Программирование и базы данных 1 14-05-2004 07:12
Установка/обновление GCC SirHenry Общий по Linux 25 12-06-2003 22:28
обновление gcc SSS Общий по Linux 7 29-04-2003 10:34
gcc error DeimoSS Программное обеспечение Linux и FreeBSD 14 07-03-2003 05:38
gcc 3.0 Rurk Общий по Linux 17 09-04-2002 23:53




 
Переход