Пишу приложение с использованием 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 там чел боролся с той же проблемой под линуксом (там кстати у меня все сразу заработало), то что там ему советовали - у меня все сделано (вроде бы) и тем неменее проблема все равно осталась.