Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с компиляцией в FreeBSD  (Прочитано 9063 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Paul
Участник

ru
Offline Offline
Пол: Мужской

« : 21-02-2008 14:57 » 

Суть проблемы такая:
Вот
Код:
...
#include <mysql.h>

main()
{
MYSQL* pDB;
MYSQL_RES* res;
pDB=mysql_init();
...
После компиляции вот что вылетает:

Код:
%gcc 1.c -I /usr/local/include/mysql/
/var/tmp//ccCdNqLd.o(.text+0x20): In function `main':
: undefined reference to `my_init'

В чём дело не могу понять.  Здесь была моя ладья...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-02-2008 15:04 » 

а ты из портов ставишь?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 21-02-2008 15:15 » 

А может ошибка не в этом участке кода? Что скрывается за многоточиями? Может где-то есть декларация этой my_init функции.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Paul
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 21-02-2008 16:37 » 

Sla, mysql стоит на хостинге, я не переустанавливал.
dimka, проблема в том, что либо mysql неправильно скомпилирован, либо я как-то неправильно задаю параметры компиляции.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 22-02-2008 08:45 » 

Цитата: Paul
dimka, проблема в том, что либо mysql неправильно скомпилирован, либо я как-то неправильно задаю параметры компиляции.
От того, что тебе запала эта мысль, ты в решении проблемы вперёд не двинешься. Раз линкер не находит функции my_init, значит где-то есть её декларация, но нигде нет реализации. Найди место этой декларации. Если это место в твоей программе - значит дело не в MySQL. Если это место в заголовочных файлах MySQL, значит ты точно будешь знать, что проблема в сборке библиотеки доступа к MySQL, НО, ты ещё будешь знать, в каком заголовочном файле объявлена эта функция, и, возможно, это поможет определить, чего тебе не хватает для правильной сборки или подключения библиотеки.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 22-02-2008 09:02 » 

Paul, все проще:
Цитата
%gcc 1.c -I /usr/local/include/mysql/
Пробела после -I быть не должно!

Также надо указать, с какой библиотекой линковать и путь к ней - ключи -l и -L.

Код:
gcc -c -O2 -Wall -I/usr/lib/mysql *.c
gcc -Wall *.o -L/usr/lib/mysql -lmysqlclient -o имя_программы

Можно объединить в одну строку.

Код:
gcc -O2 -Wall -I/usr/lib/mysql -L/usr/lib/mysql -lmysqlclient -o имя_программы *.c
« Последнее редактирование: 22-02-2008 09:10 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Paul
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 24-02-2008 10:34 » new

RXL, спасибо, теперь всё заработало Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines