Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Не получается откомпиллировать приложение с MySQL


Автор: Anton Vatchenko 10.4.2007, 10:41
Решил создать простое Си-приложение... Написал только одну строчку, где происходит инициализация mysql... Ругается:

Код

[root@vs82 planet]# gcc -o test1 test.c
/tmp/ccybh4Xo.o: In function `main':
test.c:(.text+0x1e): undefined reference to `mysql_init'
collect2: ld returned 1 exit status


Вычитал, что нужно библиотеки присобачить, но результат тот же...

Код

[root@vs82 planet]# gcc -o test1 -L/usr/lib/mysql -lmysqlclient test.c
/tmp/ccwAGzob.o: In function `main':
test.c:(.text+0x1e): undefined reference to `mysql_init'
collect2: ld returned 1 exit status

Автор: Anton Vatchenko 10.4.2007, 11:35
Ok, понял свою ошибку, но проблема теперь другая:

Код

[root@vs82 planet]# gcc -o test1 test.c -L/usr/lib/mysql -lmysqlclient
/usr/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_compress_alloc':
(.text+0xdb): undefined reference to `compress'
/usr/lib/mysql/libmysqlclient.a(my_compress.o): In function `my_uncompress':
(.text+0x16d): undefined reference to `uncompress'
collect2: ld returned 1 exit status


пытался в конце добавить -lz, но ругается, что не найден... Где-то вычитал, что нужно zlib-devel поставить... Это так? Как обычные приложения (сам mysql из консоли) работают нормально, а тут вдруг zlib потребовался!?

Автор: bilbobagginz 10.4.2007, 11:45
какой дистрибутив ?

Автор: Anton Vatchenko 10.4.2007, 13:15
Fedora Core 5

Автор: bilbobagginz 10.4.2007, 13:21
Цитата(Anton Vatchenko)

Где-то вычитал, что нужно zlib-devel поставить... Это так?

Да, нужно и возможно не только это.
не знаю как там у вас в Федорах, в Дебиан есть специальный "мета-"пакет, который устанавливают если хотят разрабатывать на машине. он устанавливает все заголовки, нужных библиотек и функций.

в Дебиан это называется build-essential, проверь есть ли такое у вас. возможно есть какой-то ГУИшный пакет, позволяющий выбрать "Development Workstation", или что-то в этом роде.

это вместо установки заголовков по одному.

Цитата(Anton Vatchenko)

Как обычные приложения (сам mysql из консоли) работают нормально, а тут вдруг zlib потребовался!?

дело в том, что они уже собраны и заголовки им поэтому уже не нужно, им уже нужно, чтобы нужные файлы библиотек ( не -devel ) были "видны" динамическому загрузчику.

Удачи.

Автор: Anton Vatchenko 10.4.2007, 13:43
а где бы найти этот devel, а то зашел на zlib.org, там только сорцы...

Автор: Бонифаций 10.4.2007, 14:15
У вас mysql вообще как установлен? самосборный или из дистрибутива?

PS. установит zlib-devel: 

yum install zlib-devel


Автор: Anton Vatchenko 10.4.2007, 14:36
у меня установлены:
MySQL-client-5.0.37-0.i386.rpm
MySQL-devel-5.0.37-0.i386.rpm
MySQL-server-5.0.37-0.i386.rpm

Автор: Anton Vatchenko 10.4.2007, 15:49
yum install zlib-devel ничего хорошего не сказал, кроме как неизвестная комманда

Автор: bilbobagginz 10.4.2007, 16:55
Anton Vatchenko, 
во-первых если yum - неизвестная команда для пользователя root, то его нужно установить.
потом, прикрутите все нужные репозитарии yum для вашего дитстрибутива.
а после попробуйте:
Цитата

yum grouplist

в списке, который получите выберите то, что вам нужно (что-то связанное с devel/dev/development) , и сделайте:
Цитата

yum groupinstall <имя группы пакетов>




удачи.

Автор: Бонифаций 10.4.2007, 22:43
если у вас mysql-devel установлен, то проверьте есть ли mysql_config.

Попробуйте mysql_config --cflags   
оно должно выдать список ключей для gcc для компиляции программ с mysql client. 
mysql_config --libs 
должно выдавать список ключей для линковки.

То есть ваша строка должна иметь вид:


gcc test.c -o test `mysql_config --cflags --libs`

(обратите внимание на вид кавычек)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)