Модераторы: xvr

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> undefined reference to `mysql_connect' 
V
    Опции темы
Larrikin
Дата 6.11.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



парни, как мне сделать свою первую программу, которая может делать хотя бы SELECT и INSERT на MySQL сервере через unix сокет?
> pkg_info
apache-1.3.37_1     The extremely popular Apache http server. Very fast, very c
autoconf-2.59_2     Automatically configure source code on many Un*x platforms
autoconf-2.61_2     Automatically configure source code on many Un*x platforms
autoconf-wrapper-20070404 Wrapper script for GNU autoconf
automake-1.10_3     GNU Standards-compliant Makefile generator (1.10)
automake-wrapper-20070404 Wrapper script for GNU automake
chrootuid-1.3       A simple wrapper that combines chroot(8) and su(1) into  on
cvsd-1.0.13_1       CVS pserver daemon
cvsup-without-gui-16.1h_2 General network file distribution system optimized for                                   CVS
expat-2.0.0_1       XML 1.0 parser written in C
gettext-0.14.5_2    GNU gettext package
glib-2.8.6_1        Some useful routines of C programming (current stable versi
gmake-3.81_1        GNU version of 'make' utility
help2man-1.36.4_1   Automatically generating simple manual pages from program o
jabberd-2.0.11_2    Online presence and instant messaging server
jpeg-6b_4           IJG's jpeg compression utilities
libiconv-1.9.2_2    A character set conversion library
libidn-0.6.8        Internationalized Domain Names command line tool
libtool-1.5.22_2    Generic shared library support script
libxml2-2.6.26      XML parser library for GNOME
links-2.1.p21,1     Lynx-like text WWW browser
lynx-2.8.5_2        A non-graphical, text-based World-Wide Web client
m4-1.4.4            GNU m4
mc-4.6.1_3          Midnight Commander, a free Norton Commander Clone
mu-conference-0.6.0_3 Multi-User Conferencing component for Jabber
mysql-client-5.0.27 Multithreaded SQL database (client)
mysql-server-5.0.27 Multithreaded SQL database (server)
nmap-4.11           Port scanning utility for large networks
p5-gettext-1.05_1   Message handling functions
pcre-6.7            Perl Compatible Regular Expressions library
pecl-PDO-1.0.3      PHP Data Objects Interface
perl-5.8.8          Practical Extraction and Report Language
php5-5.2.0          PHP Scripting Language (Apache Module and CLI)
php5-ctype-5.2.0    The ctype shared extension for php
php5-dom-5.2.0      The dom shared extension for php
php5-extensions-1.0 A "meta-port" to install PHP extensions
php5-iconv-5.2.0    The iconv shared extension for php
php5-mysql-5.2.0    The mysql shared extension for php
php5-pcre-5.2.0     The pcre shared extension for php
php5-posix-5.2.0    The posix shared extension for php
php5-session-5.2.0  The session shared extension for php
php5-simplexml-5.2.0 The simplexml shared extension for php
php5-sqlite-5.2.0   The sqlite shared extension for php
php5-tokenizer-5.2.0 The tokenizer shared extension for php
php5-xml-5.2.0      The xml shared extension for php
php5-xmlreader-5.2.0 The xmlreader shared extension for php
php5-xmlwriter-5.2.0 The xmlwriter shared extension for php
php5-zlib-5.2.0     The zlib shared extension for php
pkgconfig-0.20      A utility to retrieve information about installed libraries
png-1.2.14          Library for manipulating PNG images
ssh2-nox11-3.2.9.1_6 Secure shell client and server for V.2 SSH protocol
svgalib-1.4.3_5     A low level console graphics library
tiff-3.8.2_1        Tools and library routines for working with TIFF images
unzip-5.52_2        List, test and extract compressed files in a ZIP archive
> uname -sr
FreeBSD 6.2-STABLE
>

Это сообщение отредактировал(а) Larrikin - 6.11.2007, 11:29
PM MAIL WWW ICQ   Вверх
JackYF
Дата 6.11.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Одна тема - один вопрос. Создавай новую.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Larrikin
Дата 6.11.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



а это и есть тот же вопрос! он не менялся с первого поста - мне в проге первый раз в моей жизни надо работать с MySQL и не получается. Примеры не работают из доки - что делать не знаю, только надежда на помощь зала.
Хотя бы, может, подскажите доку конкретную по работе с мускулем в бзде, только работающую и достаточную для простых случаев, как у меня - получить массив, записать строку.
PM MAIL WWW ICQ   Вверх
bsa
Дата 6.11.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Larrikin, ты бы для приличия написал что именно у тебя не работает. и как именно. А то может у тебя, например, сервер не запущен, база или таблица не созданы.
PM   Вверх
Larrikin
Дата 6.11.2007, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



ээээ... первое сообщение вижу только я? продублирую, может поможет:

делаю по этому примеру http://im-host.net/uchebnik-mysql55.html

ncalcd.c
Код

#include <common.h>
/* This is the daemon's main work */

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;

void exiterr(int exitcode)
{
    fprintf(stderr, "%s\n", mysql_error(&mysql));
    exit(exitcode);
}

void ncalcd()
{
    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);
}




common.h
Код

#include <err.h>
#include <errno.h>
#include <fcntl.h>
//#include <libutil.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <syslog.h>
#include <unistd.h>
#include <mysql/mysql.h>


при сборке:

gcc -c godaemon.c main.c ncalc.c -I /usr/local/include/ -I /home/larrikin/files/ncalcd
gcc  -o ncalcd godaemon.o main.o ncalc.o -L /usr/local/lib/mysql/ -l mysqlclient
ncalc.o(.text+0x5a): In function `ncalcd':
: undefined reference to `mysql_connect'
gmake: *** [ncalcd] Error 1


как правильно? нужно всего лишь работать с mysql из проги - select, insert, delete

uname -sr
FreeBSD 6.2-STABLE

PM MAIL WWW ICQ   Вверх
JackYF
Дата 6.11.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 3
Всего: 162



Larrikin, ты понимаешь, что у тебя неправильно собрана библиотека libmysqlclient, на основании которой ты собираешь писать программу? Тебе надо её пересобрать правильно, добыть/установить требуемую версию с помощью средств FreeBSD (я ими не владею, например).


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Larrikin
Дата 7.11.2007, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



не понимаю, как может быть неправильно собрана библиотека стандартным make install clean из свежих портов
может надо какой-нибудь особый порт ставить еще?
PM MAIL WWW ICQ   Вверх
orthrus
Дата 7.11.2007, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



попробуйте в замен функции mysql_connect использовать mysql_real_connect, у вас наверное mysql был собран без USE_OLD_FUNCTIONS а в <mysql.h> по этому поводу описано следующие:
Код

#ifdef USE_OLD_FUNCTIONS
MYSQL *        STDCALL mysql_connect(MYSQL *mysql, const char *host,
                      const char *user, const char *passwd);
int        STDCALL mysql_create_db(MYSQL *mysql, const char *DB);
int        STDCALL mysql_drop_db(MYSQL *mysql, const char *DB);
#define     mysql_reload(mysql) mysql_refresh((mysql),REFRESH_GRANT)
#endif


да и во всех примерах идущих с mysql используется mysql_real_connect. Это все относительно mysql-5.0.34.


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
Larrikin
Дата 7.11.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



очень похоже, что дело в этом...

gcc -c godaemon.c main.c ncalc.c -I/usr/local/include/ -I/home/larrikin/files/ncalcd
ncalc.c: In function `ncalcd':
ncalc.c:18: error: too few arguments to function `mysql_real_connect'
gmake: *** [godaemon.o] Error 1


спасибо, хоть есть направление куда копать...
PM MAIL WWW ICQ   Вверх
orthrus
Дата 7.11.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: нет
Всего: 16



посмотрите список параметров в <mysql.h>, или как его используют в тестовых примерах


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
bsa
Дата 7.11.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Цитата(Larrikin @ 7.11.2007,  08:18)
очень похоже, что дело в этом...

gcc -c godaemon.c main.c ncalc.c -I/usr/local/include/ -I/home/larrikin/files/ncalcd
ncalc.c: In function `ncalcd':
ncalc.c:18: error: too few arguments to function `mysql_real_connect'
gmake: *** [godaemon.o] Error 1


спасибо, хоть есть направление куда копать...

http://dev.mysql.com/doc/refman/5.0/en/mys...al-connect.html
PM   Вверх
Larrikin
Дата 12.2.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



я не понимаю, это что, сложно чтоль? просто подключиться к серверу mysql из unix на C?

ни один пример в интернете из разных док даже не компилируется... ну это же бред, такая элементарная операция столько времени задерживает...

> uname -rs
FreeBSD 6.2-RELEASE

> cat ncald.c
Код

#include <stdio.h> 
#include <mysql/mysql.h> 

int main(int argc, char *argv[]) 
{ 
        // Дескриптор соединения 
        MYSQL *conn; 
        // Получаем дескриптор соединения 
        conn == mysql_init(NULL); 
        if(conn == NULL) 
        { 
                // Если дескриптор не получен - выводим сообщение об ошибке 
                fprintf(stderr, "Error: can't create MySQL-descriptor\n"); 
                exit(1); 
        } 
        // Подключаемся к серверу 
        if(!mysql_real_connect(conn,NULL,"root",NULL,NULL,NULL,NULL,0)){ 
                // Если нет возможности установить соединение с сервером 
                // базы данных - выводим сообщение об ошибке 
                fprintf(stderr, 
                        "Error: can't connect to database %s \n", 
                        mysql_error(conn) 
                ); 
        } else { 
                // Если соединение успешно установлено, выводим фразу - "Success!" 
                fprintf(stdout, "Success!\n"); 
        } 
        // Закрываем соединение с сервером базы данных 
        mysql_close(conn); 
} 



> gcc -o ncalcd -I /usr/local/include/ ncald.c
ncald.c: In function `main':
ncald.c:18: warning: passing arg 6 of `mysql_real_connect' makes integer from pointer without a cast
/var/tmp//cclz8wKX.o(.text+0x22): In function `main':
: undefined reference to `mysql_init'
/var/tmp//cclz8wKX.o(.text+0x64): In function `main':
: undefined reference to `mysql_real_connect'
/var/tmp//cclz8wKX.o(.text+0x79): In function `main':
: undefined reference to `mysql_error'
/var/tmp//cclz8wKX.o(.text+0xb3): In function `main':
: undefined reference to `mysql_close'

> pkg_info | grep mysql-
mysql-client-5.1.21 Multithreaded SQL database (client)
mysql-server-5.1.21 Multithreaded SQL database (server)
PM MAIL WWW ICQ   Вверх
popovb
Дата 14.2.2008, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Цитата(Larrikin @ 12.2.2008,  19:38)
я не понимаю, это что, сложно чтоль? просто подключиться к серверу mysql из unix на C?

> gcc -o ncalcd -I /usr/local/include/ ncald.c
ncald.c: In function `main':
ncald.c:18: warning: passing arg 6 of `mysql_real_connect' makes integer from pointer without a cast
/var/tmp//cclz8wKX.o(.text+0x22): In function `main':
: undefined reference to `mysql_init'
/var/tmp//cclz8wKX.o(.text+0x64): In function `main':
: undefined reference to `mysql_real_connect'
/var/tmp//cclz8wKX.o(.text+0x79): In function `main':
: undefined reference to `mysql_error'
/var/tmp//cclz8wKX.o(.text+0xb3): In function `main':
: undefined reference to `mysql_close'


Все предельно просто?

Как собираешь? Инклюды подключил. А либы?

Ясно тебе компилятор сказал, что ссылка не определена.

Добавь -L/bla-bla/mysql -lmysqlclient -lz
PM MAIL   Вверх
Larrikin
Дата 14.2.2008, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 15.8.2007

Репутация: нет
Всего: нет



действительно, проблема была всего-лишь узнать о ключе компиляции -L smile
пока продвигаюсь дальше...
PM MAIL WWW ICQ   Вверх
popovb
Дата 14.2.2008, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Цитата(Larrikin @ 14.2.2008,  11:59)
пока продвигаюсь дальше...

 smile 
удачи!
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.