Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добавление библиотек в проект 
V
    Опции темы
toshun
Дата 14.7.2010, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте, уважаемые программисты.

Сижу я на Mac OS Snow Leopard. Пишу я программу при помощи MYSQL API. На мак установил я dmg образ и с помощью портов mysql5. Сначала при подключении 
include <mysql.h>

не находил библиотеку. Затем я в configure.ac я прописал и инклуды и либы

  echo "  -I/opt/local/include/mysql5/mysql/ \\" >> autoconf.mk
  echo "  -L/opt/local/lib/mysql5/mysql/ \\" >> autoconf.mk

Библиотеки были найдены. Я со спокойной душой принялся писать код соединения с базой данной на сервере.
Подключил 
Код

#include <mysql.h>
#include <my_global.h>
#include <my_sys.h>

В теле программы написал простенький код для проверки:
Код

   MYSQL *conn;
   MYSQL_RES *res;
   MYSQL_ROW row;
   
    conn = mysql_init(NULL);

И тут при компиляции возникла ошибка.

Undefined symbols:
  "_mysql_init", referenced from:
      noname::Connect()      in noname.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

Я так понимаю тут дело с библиотеками. То есть функция определена, но не описана или что-то типа того.
Помогите разобраться пожалуйста.

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


Дикий Кот. =^.^=
****
Награды: 1



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

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



Make-файлы Вы исходя из религиозных соображений используете?

Как бы то ни было нужные нам флаги:
-l и далее название библиотеки. Учитываем, что префикс lib и расширение .a or .dylib будут добавлены автоматически, поэтому, если либа называется , скажем, libmysql.a, пишем -lmysql).
-L и далее пути поиска библиотек.
-I и далее пути поиска заголовочных файлов.

В итоге gcc будет вызван как-то так:
Код

gcc -I/usr/local/mysql/include -lmysql -L/usr/local/mysql/lib main.c


Что у Вас стоит после -l?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toshun
Дата 14.7.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Makefile используется из-за большого количества файлов, который нужно собирать. Так получилось, что только в одной файле нужна будет mysql библиотека.
То, что Вы предложили не помогает. Такой же результат.
Лучше скажите дело в том что компилятор нашел заголовочный файл, а саму библиотеку на нашел?
PM MAIL   Вверх
toshun
Дата 14.7.2010, 22:36 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ошибка происходит во время линковки.
Подключил туда ключ -lmysql, что теперь выдает

ld: library not found for -lmysql
collect2: ld returned 1 exit status

Объясните пожалуйста как подключить эти вонючие библиотеки. Я думал что с помощью -I и -L но как оказалось это не так.
PM MAIL   Вверх
kemiisto
Дата 14.7.2010, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Посмотрите, какие файлы лежат в /opt/local/lib/mysql5/mysql/:
Код
ls /opt/local/lib/mysql5/mysql/


Может у Вас совсем по-другому библиотека называется.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toshun
Дата 14.7.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(kemiisto @  14.7.2010,  22:50 Найти цитируемый пост)
ls /opt/local/lib/mysql5/mysql/

libdbug.a            
libmysqlclient_r.la
libheap.a            
libmysqld.a
libmyisam.a            
libmystrings.a
libmyisammrg.a            
libmysys.a
libmysqlclient.16.dylib        
libndbclient.3.dylib
libmysqlclient.a        
libndbclient.a
libmysqlclient.dylib        
libndbclient.dylib
libmysqlclient.la        
libndbclient.la
libmysqlclient_r.16.dylib    
libvio.a
libmysqlclient_r.a        
plugin
libmysqlclient_r.dylib


PM MAIL   Вверх
kemiisto
Дата 14.7.2010, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(toshun @  14.7.2010,  23:36 Найти цитируемый пост)
Подключил туда ключ -lmysql, что теперь выдает

А надо, судя по всему, -lmysqlclient.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
toshun
Дата 14.7.2010, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(kemiisto @  14.7.2010,  23:12 Найти цитируемый пост)
-lmysqlclient

Спасибо большущее! Собралось! Спасибо еще раз
PM MAIL   Вверх
kemiisto
Дата 14.7.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(toshun @  15.7.2010,  00:19 Найти цитируемый пост)
Спасибо большущее! Собралось! Спасибо еще раз

Всегда пожалуйста.  smile 

Поставил только что сам. Таки -lmysqlclient, так как либа называется libmysqlclient.a/libmysqlclient.dylib. 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Продукция Apple | Следующая тема »


 




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


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

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