|
Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по Linux » Функции в gcc |
|
Функции в gcc
|
Новый участник Сообщения: 41 |
Профиль | Отправить 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).
Если кто знает, что делать с этою проблемой, помогите! |
|
------- Отправлено: 03:28, 04-07-2004 |
info man howto Сообщения: 6958
|
Профиль | Сайт | Отправить PM | Цитировать Хорошо-бы последние строчки лога посотреть
|
------- Отправлено: 06:03, 04-07-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 11
|
Профиль | Сайт | Отправить PM | Цитировать Подключения одних хедеров недостаточно. Нужно еще подключать динамическую библиотеку, в которой находятся откомпилированные функции. Если я правильно понял, то вот такая строчка
проходит и создает файл 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 Кстати, о динамических библиотеках и компиляции с помощью gcc можно читать вот тут. |
------- Отправлено: 12:12, 04-07-2004 | #3 |
Старожил Сообщения: 270
|
Профиль | Отправить PM | Цитировать кстати = какие существуют способы (традиционные, если так можно выразиться) поиска библиотек, в которых находится нужная функция?
я напролом пользуюсь grep function_name /usr/lib/lib*so* а потом выбираю по смыслу))) просто некоторые функции встречаются в разных библиотеках (програмка использующая glut требует подключения штук трех - четырех иксовых библиотек, вот и ищешь, где что лежит) |
------- Отправлено: 09:53, 06-07-2004 | #4 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить 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
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
Я могу только предложить еще искать не во всех .so файлах, а только в тех, которые находятся в одном пакете с заголовочными (ну, или если заголовки в packagename-devel, то библиотеки будут в packagename). |
|
------- Отправлено: 11:37, 06-07-2004 | #6 |
Старожил Сообщения: 270
|
Профиль | Отправить PM | Цитировать Figaro
в принципе так, но когда я сделал лишь -lglut как потом выяснилось, потребовалось -lXmu -lGl и так далее... но это видимо редкий случай... |
------- Отправлено: 10:07, 08-07-2004 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|