The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"mysqlclient + OpenBSD + C"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"mysqlclient + OpenBSD + C"
Сообщение от Savva emailИскать по авторуВ закладки(ok) on 15-Июл-04, 11:55  (MSK)
Пишу приложение с использованием MySQL на сишнике под OpenBSD 3.5.
Сандартный исходник:
#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,"1.2.3.4","root","зфыыцщкв")))
     exiterr(1);
  if (mysql_select_db(&mysql,"mysql")) exiterr(2);
  if (mysql_query(&mysql,"SELECT Host,User FROM user"))
     exiterr(3);

  if (!(res = mysql_store_result(&mysql))) exiterr(4);
  while((row = mysql_fetch_row(res))) {
      printf("%s - %s\n",row[0],row[1]);
  }

  if (!mysql_eof(res)) exiterr(5);
  mysql_free_result(res);
  mysql_close(&mysql);
}


Запускаю так:
bash-2.05b# cc `/usr/local/bin/mysql_config --libs` `/usr/local/bin/mysql_config --cflags` test_mysql.c -o test_mysql -lm -lmysqlclient

Ругается так:
/tmp//ccseK628.o: In function `main':
/tmp//ccseK628.o(.text+0x4b): undefined reference to `mysql_connect'
collect2: ld returned 1 exit status

И сразу насчет библиотек:
bash-2.05b# ldconfig -r|grep sql
        7:-lmysqlclient.12.0 => /usr/lib/libmysqlclient.so.12.0
        81:-lmysqlclient_r.12.0 => /usr/local/lib/libmysqlclient_r.so.12.0

bash-2.05b# /usr/local/bin/mysql_config --libs
-L/usr/local/lib/mysql -lmysqlclient -lz -lm  -L/usr/lib -lssl -lcrypto

bash-2.05b# /usr/local/bin/mysql_config --cflags
-I/usr/local/include/mysql -O2 -pipe

Для надежности ручками скопировал :
cp /usr/local/lib/mysql/libmysqlclient.so.12.0 /usr/lib/libmysqlclient.so.12.0


Проблема следующая:
я так понимаю что сишник все равно не линкует mysqlclient т.к. ругается так же если куда нить переместить библиотеки подальше от стандартных и определенных ручками путей.

Читал https://www.opennet.ru/openforum/vsluhforumID9/2607.html#1 там чел боролся с той же проблемой под линуксом (там кстати у меня все сразу заработало), то что там ему советовали - у меня все сделано (вроде бы) и тем неменее проблема все равно осталась.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "mysqlclient + OpenBSD + C"
Сообщение от elvenic Искать по авторуВ закладки(??) on 15-Июл-04, 18:28  (MSK)
>Пишу приложение с использованием MySQL на сишнике под OpenBSD 3.5.

[skip]

>
>Запускаю так:
>bash-2.05b# cc `/usr/local/bin/mysql_config --libs` `/usr/local/bin/mysql_config --cflags` test_mysql.c -o test_mysql -lm -lmysqlclient
>
>Ругается так:
>/tmp//ccseK628.o: In function `main':
>/tmp//ccseK628.o(.text+0x4b): undefined reference to `mysql_connect'
>collect2: ld returned 1 exit status
>


try this:

cc test_mysql.c `<...>mysql_config --libs`

(mozhet byt' problema s poriadkom sledovanija bibliotek v kommandnoj stroke: ja pomniu w staryh Unix'ax (Inmos, Demos on CM4, jescho kto-to pomnit takih ;) ?) linker delal tol'ko odin prohod po bibliotekam v komandnoj stroke)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "mysqlclient + OpenBSD + C"
Сообщение от Savva emailИскать по авторуВ закладки(ok) on 16-Июл-04, 09:25  (MSK)
>(mozhet byt' problema s poriadkom sledovanija bibliotek v kommandnoj stroke

попробовал всяко... не помогает.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "еще в догонку"
Сообщение от Savva emailИскать по авторуВ закладки(ok) on 16-Июл-04, 10:13  (MSK)
попробовал вообще без mysqlclient откомпилить - матьгов прибавилось:

bash-2.05b# cc test_mysql.c -o test_mysql `/usr/local/bin/mysql_config --cflags`
/tmp//ccGT2967.o: In function `exiterr':
/tmp//ccGT2967.o(.text+0x13): undefined reference to `mysql_error'
/tmp//ccGT2967.o: In function `main':
/tmp//ccGT2967.o(.text+0x4b): undefined reference to `mysql_connect'
/tmp//ccGT2967.o(.text+0x71): undefined reference to `mysql_select_db'
/tmp//ccGT2967.o(.text+0x97): undefined reference to `mysql_query'
/tmp//ccGT2967.o(.text+0xb8): undefined reference to `mysql_store_result'
/tmp//ccGT2967.o(.text+0xf3): undefined reference to `mysql_fetch_row'
/tmp//ccGT2967.o(.text+0x10d): undefined reference to `mysql_eof'
/tmp//ccGT2967.o(.text+0x12f): undefined reference to `mysql_free_result'
/tmp//ccGT2967.o(.text+0x13c): undefined reference to `mysql_close'
collect2: ld returned 1 exit status

Значит все же и система и компилятор вкурсе что такое -lmysqlclient , но тогда в чем дело?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "еще в догонку"
Сообщение от Savva emailИскать по авторуВ закладки(ok) on 16-Июл-04, 16:12  (MSK)
Сам нашел ответ на этом же форуме, правда речь там шла не о сишнике а о паскале :

На самом деле проблема совсем иного рода.
Начиная с версии 4.0 в MySQL присутствует новый API, в котором нет
функции mysql_connect. Зато есть mysql_init+mysql_real_connect.
Для того, чтобы mysqlclient версии > 4.0 поддерживал вызовы устаревших функций, его библиотеки следует скомпилировать с ключом
-DUSE_OLD_FUNCTIONS. Тогда все чудесно работает.
Но разработчики рекомендуют использовать связку mysql_init+mysql_real_connect.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру