URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 2370
[ Назад ]

Исходное сообщение
"mysql + C"

Отправлено Александер , 10-Дек-03 21:11 
простенькая прога на сях

#include "mysql.h"

MYSQL mysql;
int main(void)
{
   mysql_connect(&mysql, "localhost", "user", "password");
   return(0);
}

вываливается:

/var/tmp//blablabla.o: in function 'main'
/var/tmp//blablabla.o(.text+0x25) undefined reference to 'mysql_connect'

mysql.h лежит там где надо.
прописывание полных путей и gcc -I /.. не помогает.



Содержание

Сообщения в этом обсуждении
"mysql + C"
Отправлено divan , 11-Дек-03 11:25 
>простенькая прога на сях
>
>#include "mysql.h"
>
>MYSQL mysql;
>int main(void)
>{
>   mysql_connect(&mysql, "localhost", "user", "password");
>   return(0);
>}
>
>вываливается:
>
>/var/tmp//blablabla.o: in function 'main'
>/var/tmp//blablabla.o(.text+0x25) undefined reference to 'mysql_connect'
>
>mysql.h лежит там где надо.
>прописывание полных путей и gcc -I /.. не помогает.
А -lmysqlclient  прописано?


"mysql + C"
Отправлено Александер , 11-Дек-03 13:16 

>>mysql.h лежит там где надо.
>>прописывание полных путей и gcc -I /.. не помогает.
>А -lmysqlclient  прописано?

да.


"mysql + C"
Отправлено divan , 11-Дек-03 13:36 
>
>>>mysql.h лежит там где надо.
>>>прописывание полных путей и gcc -I /.. не помогает.
>>А -lmysqlclient  прописано?
>
>да.
Согласись, очевидно одно - линкер не видит функцию mysql_connect() ни в одной из подключенных библиотек. Поэтому имхо два варианта: либо что-то с самой библиотекой libmysqlclient, либо все-таки что-то напутано с путями или названиями. Выложи Makefile или полную команду компилцию. Покажи где лежат библиотеча и хидеры. ??? что еще?..


"mysql + C"
Отправлено Александер , 11-Дек-03 13:52 

>Согласись, очевидно одно - линкер не видит функцию mysql_connect() ни в одной
>из подключенных библиотек. Поэтому имхо два варианта: либо что-то с самой
>библиотекой libmysqlclient, либо все-таки что-то напутано с путями или названиями. Выложи
>Makefile или полную команду компилцию. Покажи где лежат библиотеча и хидеры.
>??? что еще?..

gcc -lmysqlclient test.c
результат: /usr/local/ld: cannot find -lmysql client

gcc -lmysqlclient -L/path test.c - тоже что было раньше.

ldconfig -r всё отлично показывает. mysqlclient присутствует несколько раз там где надо.
include с полным путём тоже не помогает.

я бы так не парился, но тут большая часть проекта стоит из-за этого. причём проект надо закончить как можно быстрее.
ешё есть какие-нибудь варианты?


"mysql + C"
Отправлено Soldier , 11-Дек-03 14:18 
>
>>Согласись, очевидно одно - линкер не видит функцию mysql_connect() ни в одной
>>из подключенных библиотек. Поэтому имхо два варианта: либо что-то с самой
>>библиотекой libmysqlclient, либо все-таки что-то напутано с путями или названиями. Выложи
>>Makefile или полную команду компилцию. Покажи где лежат библиотеча и хидеры.
>>??? что еще?..
>
>gcc -lmysqlclient test.c
>результат: /usr/local/ld: cannot find -lmysql client
>
>gcc -lmysqlclient -L/path test.c - тоже что было раньше.
>
>ldconfig -r всё отлично показывает. mysqlclient присутствует несколько раз там где надо.
>
>include с полным путём тоже не помогает.
>
>я бы так не парился, но тут большая часть проекта стоит из-за
>этого. причём проект надо закончить как можно быстрее.
>ешё есть какие-нибудь варианты?
>
>

Выписка из документации:

==================================
11.1.3.5 mysql_connect()

MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)
Description

This function is deprecated. It is preferable to use mysql_real_connect() instead.
====================================

Может в этом причина? Я где то слышал, что в новых mysql-ях mysql_connect по дефалту убрали и чтобы эту функцию пользовать надо mysql с какими-то параметрами компилить



"mysql + C"
Отправлено Soldier , 11-Дек-03 14:28 
>
>>Согласись, очевидно одно - линкер не видит функцию mysql_connect() ни в одной
>>из подключенных библиотек. Поэтому имхо два варианта: либо что-то с самой
>>библиотекой libmysqlclient, либо все-таки что-то напутано с путями или названиями. Выложи
>>Makefile или полную команду компилцию. Покажи где лежат библиотеча и хидеры.
>>??? что еще?..
>
>gcc -lmysqlclient test.c
>результат: /usr/local/ld: cannot find -lmysql client
>
>gcc -lmysqlclient -L/path test.c - тоже что было раньше.

Можно попробовать
gcc test.c /path/libmysqlclient.so.x.x



"mysql + C"
Отправлено Александер , 11-Дек-03 18:26 
мда...
вобщем окончательный вариант такой:

#include "/path/mysql.h"

main()
{
MYSQL mysql;

mysql_init(&mysql);
mysql_real_connect(&mysql, host, user, pass, etc...);

}

gcc test.c -L/path_to_mysqlclient -Lmysqlclient


всем спасибо за помощь