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

Исходное сообщение
"Ошибка компилятора "

Отправлено Andrey , 29-Дек-09 19:28 
В общем час назад всё работало, и тут начало выдавать ошибку:
[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);
}


Содержание

Сообщения в этом обсуждении
"Ошибка компилятора "
Отправлено Michael , 30-Дек-09 11:42 
>В общем час назад всё работало, и тут начало выдавать ошибку:
>[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? и проверьте, действительно ли там есть его библиотека


"Ошибка компилятора "
Отправлено Andrey , 30-Дек-09 12:29 
Выдаёт:
-rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto

"Ошибка компилятора "
Отправлено Andy_zzzzzz , 30-Дек-09 14:34 
>Выдаёт:
>-rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto

проверь есть ли физически файлы библиотек в /usr/lib/mysql ?



"Ошибка компилятора "
Отправлено Andrey , 30-Дек-09 14:37 
[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

Не пойму, потому что всё работало, а тут резко такое


"Ошибка компилятора "
Отправлено Slavaz , 30-Дек-09 14:49 
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.


"Ошибка компилятора "
Отправлено Slavaz , 30-Дек-09 14:55 
и немного странный код. Предлагаю шаблонно, в качестве наброска:

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);