Начал использовать эту библиотку и сразу возникли проблемы)) при инициализации config_t Код (Text): config_t* config; config_init(config); Компилятор выдает. что undefined reference. Мне непонтяно, почему config должен быть определен,если я его и собирюсь инициализировать?
art Специально скачал библиотеку, чтоб заглянуть в tests/tests.c Код (Text): static void parse_and_compare(const char *input_file, const char *output_file) { config_t cfg; int ok; config_init(&cfg); config_set_include_dir(&cfg, "./testdata"); ...
art Описание проблемы на грани фантастики. Вопрос, который порождает десяток ответных вопросов. Кто там undefined reference? config? Или config_init? Или может config_t? Или main? Что за компилятор? На какой системе происходит сборка? Каким образом установлена libconfig? Какова командная строка сборки и какие флаги линкера она содержит?
> Кто там undefined reference? undefined reference to config_init > Что за компилятор? gcc > На какой системе происходит сборка? debian > Каким образом установлена libconfig? распаковал и скопировал в нужную директорию > Какова командная строка сборки и какие флаги линкера она содержит? никаких флагов не содержит. Я подключил h-файл и все.
Я собираю при помощи pkg-config. Все это выглядит так: gcc 'pkg-config --cflags libconfig' main.c -o main \ 'pkg-config --libs libconfig' Пишет: No surch file or direcotry. Хотя в этой директории находится libconfig
код не верен, указаетель должен на что-то указывать... это раз... никак не относится к: это два... собирай код с файлами из папки lib или собирай либу отдельно и линкуй с ней... это три... ЗЫ плохо, очень плохо...
art Ты не подключил библиотеку. В gcc для подключения библиотеки libconfig надо добавить флаг -lconfig. Но libconfig использует pkg-config, что всё упрощает. Надо в командную строку вызова gcc добавить Код (Text): `pkg-config --libs --cflags libconfig` Но для того, чтобы pkg-config сработал бы, надо поставить libconfig правильно. Так как принято в дебиан. Надо почитать про методы установки софта в дебиане. Если это слишком сложно, то можно поставить неправильно, но так, чтобы работало: скачать сорцы libconfig, распаковать их, зайти в полученную директорию и выполнить команды: Код (Text): ./configure --prefix=/usr make make install Мне, почему-то кажется, что дело в том, что pkg-config не установлен. Дебиан ведь система заточенная на установку из сорцов, так? Поэтому средства разработки могут быть и не установлены по-умолчанию. То есть мне кажется, что libconfig уже должен быть установлен в системе. Правда быть может без заголовочных файлов, но это исправляется установкой пакета типа libconfig-devel или что-нибудь в этом роде. Не знаю как это в делается именно в дебиан. А там не пишется, какого именно file or directory нету? pkg-config или main.c? Или может быть libconfig.h? Или libconfig.pc?
> Мне, почему-то кажется, что дело в том, что pkg-config не установлен. Ну я сделал следующие: apt-cache search pkg-config, потом apt-get install pkg-config > А там не пишется, какого именно file or directory нету? pkg-config или main.c? Или может быть libconfig.h? Или libconfig.pc? Пишет следующие: pkg-config --cflags libconfig: No surch file or directory pkg-config --libs libconfig: No surch file or directory
art Я не знаю, как можно получить такие надписи. Если pkg-config не находит нужного ему .pc файла, он зело многословно ругается. Совсем иначе. Примерно так: Код (Text): $ pkg-config --cflags жопа Package жопа was not found in the pkg-config search path. Perhaps you should add the directory containing `жопа.pc' to the PKG_CONFIG_PATH environment variable No package 'жопа' found Если же bash или make не нашли бы pkg-config, они бы писали про "command not found". Так что ошибка, возникающая у тебя, загадочна и поразительна. И, как назло, моя телепатическая связь с твоим компьютером неустойчива. Я не могу понять в чём дело. Но ты попробуй запустить консольку и выполнить каждую команду по-отдельности. Вгони в консольку команды: Код (Text): pkg-config --cflags atk pkg-config --cflags libconfig И посмотри когда и на чём это дело сфейлится. И сфейлиться ли.
Если отдельно выполнять команды. то выводит следующие: Код (Text): $ pkg-config --cflags жопа Package жопа was not found in the pkg-config search path. Perhaps you should add the directory containing `жопа.pc' to the PKG_CONFIG_PATH environment variable No package 'жопа' found Хотя в PKG_CONFIG_PATH я прописал путь к библиотеке