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

Исходное сообщение
"Клиент на С для MYSQL не видит функции MYSQL."

Отправлено DH , 27-Фев-04 16:38 
Пробую програмить под Linux. Хочу поюзать мускул из сишки.
Поставил мускул 4.1. - всё по дефолту.
Запустил, проверил через mysql -u root mysql -p.
Базы посоздавал, юзверей. Всё ок.

Дошёл до с.
Набил исходник - простой до невменяемости:
//============= one.c =============
#include <stdio.h>
#include <mysql/mysql.h>
static MYSQL *d_sql;
int main()
{
  mysql_init(d_sql);
  return 0;
}
//=================
Make file сделал
//========Makefile=========
one: one.c
        gсс -o one one.c
//=================
Самое интерестное.
Делаю make и получается фигня.
//========фигня=========
# make
gсс -o one one.c
/tmp/ccw5wJiJ.o: In function `main':
/tmp/ccw5wJiJ.o(.text+0x10): undefined reference to `mysql_init'
collect2: ld returned 1 exit status
make: *** [one] Error 1
//======================

Насколько я знаю из сишки - он мне написал, что неопределена связь (реализация, тобишь) mysql_init.
В mysql.h файле она есть - проверял.
Так какого фига..........!!!!!!!!!!

Вопрос по ходу - в h файлах - прототипы функций, а где в линухе хранятся реализации функций и как он связывает при компиляции!

Заранее благодарен хоть на какую нибудь инфу!


Содержание

Сообщения в этом обсуждении
"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено solov , 27-Фев-04 20:10 
Тебе надо просто подключит все правильно. Где -lmysqlclient? Для того что-бы долго не искать где у тебя лежат либы и инклуды с mysql идет маленькая програмка mysql_config. Тебе остается только сделать следуещее
gcc -o one one.c 'mysql_config --cflags' 'mysql_config --libs'


>Пробую програмить под Linux. Хочу поюзать мускул из сишки.
>Поставил мускул 4.1. - всё по дефолту.
>Запустил, проверил через mysql -u root mysql -p.
>Базы посоздавал, юзверей. Всё ок.
>
>Дошёл до с.
>Набил исходник - простой до невменяемости:
>//============= one.c =============
>#include <stdio.h>
>#include <mysql/mysql.h>
>static MYSQL *d_sql;
>int main()
>{
>  mysql_init(d_sql);
>  return 0;
>}
>//=================
>Make file сделал
>//========Makefile=========
>one: one.c
>        gсс -o one one.c
>
>//=================
>Самое интерестное.
>Делаю make и получается фигня.
>//========фигня=========
># make
>gсс -o one one.c
>/tmp/ccw5wJiJ.o: In function `main':
>/tmp/ccw5wJiJ.o(.text+0x10): undefined reference to `mysql_init'
>collect2: ld returned 1 exit status
>make: *** [one] Error 1
>//======================
>
>Насколько я знаю из сишки - он мне написал, что неопределена связь
>(реализация, тобишь) mysql_init.
>В mysql.h файле она есть - проверял.
>Так какого фига..........!!!!!!!!!!
>
>Вопрос по ходу - в h файлах - прототипы функций, а где
>в линухе хранятся реализации функций и как он связывает при компиляции!
>
>
>Заранее благодарен хоть на какую нибудь инфу!



"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено DH , 27-Фев-04 22:05 
>Тебе надо просто подключит все правильно. Где -lmysqlclient? Для того что-бы долго
>не искать где у тебя лежат либы и инклуды с mysql
>идет маленькая програмка mysql_config. Тебе остается только сделать следуещее
>gcc -o one one.c 'mysql_config --cflags' 'mysql_config --libs'

Круто - получилось!
Спасибочки!
А как по поводу общеобразовательных моментов?
Извините за наглость! :)

>>Вопрос по ходу - в h файлах - прототипы функций, а где
>>в линухе хранятся реализации функций и как он связывает при компиляции!


"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено DS , 30-Апр-04 21:12 
>Тебе надо просто подключит все правильно. Где -lmysqlclient? Для того что-бы долго
>не искать где у тебя лежат либы и инклуды с mysql
>идет маленькая програмка mysql_config. Тебе остается только сделать следуещее
>gcc -o one one.c 'mysql_config --cflags' 'mysql_config --libs'
У меня на флаг 'mysql_config --libs' выводит следующее:
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
Что делать? 8) Подскажите плз..
>
>
>>Пробую програмить под Linux. Хочу поюзать мускул из сишки.
>>Поставил мускул 4.1. - всё по дефолту.
>>Запустил, проверил через mysql -u root mysql -p.
>>Базы посоздавал, юзверей. Всё ок.
>>
>>Дошёл до с.
>>Набил исходник - простой до невменяемости:
>>//============= one.c =============
>>#include <stdio.h>
>>#include <mysql/mysql.h>
>>static MYSQL *d_sql;
>>int main()
>>{
>>  mysql_init(d_sql);
>>  return 0;
>>}
>>//=================
>>Make file сделал
>>//========Makefile=========
>>one: one.c
>>        gсс -o one one.c
>>
>>//=================
>>Самое интерестное.
>>Делаю make и получается фигня.
>>//========фигня=========
>># make
>>gсс -o one one.c
>>/tmp/ccw5wJiJ.o: In function `main':
>>/tmp/ccw5wJiJ.o(.text+0x10): undefined reference to `mysql_init'
>>collect2: ld returned 1 exit status
>>make: *** [one] Error 1
>>//======================
>>
>>Насколько я знаю из сишки - он мне написал, что неопределена связь
>>(реализация, тобишь) mysql_init.
>>В mysql.h файле она есть - проверял.
>>Так какого фига..........!!!!!!!!!!
>>
>>Вопрос по ходу - в h файлах - прототипы функций, а где
>>в линухе хранятся реализации функций и как он связывает при компиляции!
>>
>>
>>Заранее благодарен хоть на какую нибудь инфу!



"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено solov , 01-Май-04 11:50 
На сколько я знаю mysqlclient.so должен лежать в /usr/lib/. Попробуй запустить в консоле mysql если появится
mysql>
то эта либа точно есть. ищи ее с помощью find. Когда найдеш тогда не забудь указать компилятору путь к либе -L / .... -lmysqlclient. Ну а если ее у тебя нет тогда качай с инета и копируй в /usr/lib

"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено DS , 01-Май-04 13:08 
>На сколько я знаю mysqlclient.so должен лежать в /usr/lib/. Попробуй запустить в
>консоле mysql если появится
>mysql>
>то эта либа точно есть. ищи ее с помощью find. Когда найдеш
>тогда не забудь указать компилятору путь к либе -L / ....
>-lmysqlclient. Ну а если ее у тебя нет тогда качай с
>инета и копируй в /usr/lib
делаю locate mysqlclient
находит
/usr/lib/mysql/libmysqlclient.so и еще несколько версий.

делаю
gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient.so proga.c
gcc -L/usr/include/mysql -L/usr/lib/mysql -lmysqlclient.so proga.c
gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient proga.c
gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient_r.so.10.0.0 proga.c

И всеравно пишет /usr/bin/ld: cannot find
-llibmysqlclient.so и тп.
collect2: ld returned 1 exit status
Че делать? 8)

П.С. С праздничокм. 8))))



"Клиент на С для MYSQL не видит функции MYSQL."
Отправлено DS , 01-Май-04 20:48 
Все разобрался..;)
>>На сколько я знаю mysqlclient.so должен лежать в /usr/lib/. Попробуй запустить в
>>консоле mysql если появится
>>mysql>
>>то эта либа точно есть. ищи ее с помощью find. Когда найдеш
>>тогда не забудь указать компилятору путь к либе -L / ....
>>-lmysqlclient. Ну а если ее у тебя нет тогда качай с
>>инета и копируй в /usr/lib
>делаю locate mysqlclient
>находит
>/usr/lib/mysql/libmysqlclient.so и еще несколько версий.
>
>делаю
>gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient.so proga.c
>gcc -L/usr/include/mysql -L/usr/lib/mysql -lmysqlclient.so proga.c
>gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient proga.c
>gcc -L/usr/include/mysql -L/usr/lib/mysql -llibmysqlclient_r.so.10.0.0 proga.c
>
>И всеравно пишет /usr/bin/ld: cannot find
>-llibmysqlclient.so и тп.
>collect2: ld returned 1 exit status
>Че делать? 8)
>
>П.С. С праздничокм. 8))))