В общем час назад всё работало, и тут начало выдавать ошибку:
[root@localhost ****]# gcc -o mysqlrun $(mysql_config --cflags) hello.c $(mysql_config --libs)
/tmp/ccm27GdK.o: In function `main':
/usr/****/hello.c:19: undefined reference to `mysql_connect'
collect2: ld returned 1 exit status
Из-за чего это может быть? Код:
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;void exiterr(int exitcode)
{
fprintf(stderr, "%s\n", mysql_error(&mysql));
exit(exitcode);
}int main()
{
uint i = 0;if (!(mysql_connect(&mysql,"host","username","password")))
exiterr(1);
if (mysql_select_db(&mysql,"payroll")) exiterr(2);
if (mysql_query(&mysql,"SELECT name,rate FROM emp_master"))
exiterr(3);
if (!(res = mysql_store_result(&mysql))) exiterr(4);
while((row = mysql_fetch_row(res))) {
for (i=0 ; i < mysql_num_fields(res); i++)
printf("%s\n",row[i]);
}
if (!mysql_eof(res)) exiterr(5);
mysql_free_result(res);
mysql_close(&mysql);
}
>В общем час назад всё работало, и тут начало выдавать ошибку:
>[root@localhost ****]# gcc -o mysqlrun $(mysql_config --cflags) hello.c $(mysql_config --libs)
>/tmp/ccm27GdK.o: In function `main':
>/usr/****/hello.c:19: undefined reference to `mysql_connect'
>collect2: ld returned 1 exit status
>>что выдает mysql_config --libs? и проверьте, действительно ли там есть его библиотека
Выдаёт:
-rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto
>Выдаёт:
>-rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcryptoпроверь есть ли физически файлы библиотек в /usr/lib/mysql ?
[root@localhost ~]# cd /usr/lib/mysql
[root@localhost mysql]# dir
libdbug.a libmysqlclient_r.so.16 libndbclient.a
libheap.a libmysqlclient_r.so.16.0.0 libndbclient.so
libmyisam.a libmysqlclient.so libndbclient.so.3
libmyisammrg.a libmysqlclient.so.15 libndbclient.so.3.0.0
libmysqlclient.a libmysqlclient.so.15.0.0 libvio.a
libmysqlclient_r.a libmysqlclient.so.16 mysqlbug
libmysqlclient_r.so libmysqlclient.so.16.0.0 mysql_config
libmysqlclient_r.so.15 libmystrings.a plugin
libmysqlclient_r.so.15.0.0 libmysys.aНе пойму, потому что всё работало, а тут резко такое
1)
- mysql_connect (http://dev.mysql.com/doc/refman/5.1/en/mysql-connect.html)
+ mysql_real_connect (http://dev.mysql.com/doc/refman/5.1/en/mysql-real-connect.html)2) use google before.
и немного странный код. Предлагаю шаблонно, в качестве наброска:MYSQL *conn = NULL;
MYSQL *real_conn = NULL;conn = mysql_init (NULL);
if (conn == NULL)
return;mysql_options (conn, MYSQL_SET_CHARSET_NAME, "utf8");
mysql_options (conn, MYSQL_INIT_COMMAND, "set names 'utf8';");real_conn = mysql_real_connect (conn, host_name, user_name, password, ... );
if (real_conn == NULL)
{
fprintf(stderr,"fail: %s\n",mysql_error (conn));
mysql_close (conn);
}
if (mysql_select_db (real_conn, connect_info.db_name) != 0){
...
}
if (mysql_query(real_conn,"SELECT name,rate FROM emp_master"))
{
...
}...
mysql_close (real_conn);
mysql_close (conn);