libconfig

Тема в разделе "WASM.HEAP", создана пользователем art, 28 апр 2011.

  1. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    Начал использовать эту библиотку и сразу возникли проблемы)) при инициализации config_t
    Код (Text):
    1. config_t* config;
    2. config_init(config);
    Компилятор выдает. что undefined reference. Мне непонтяно, почему config должен быть определен,если я его и собирюсь инициализировать?
     
  2. Rustem

    Rustem New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2004
    Сообщения:
    429
    Адрес:
    Russia
    config_t config;
    config_init(&config);

    не ?
     
  3. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    нет
     
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    art
    Специально скачал библиотеку, чтоб заглянуть в tests/tests.c
    Код (Text):
    1. static void parse_and_compare(const char *input_file, const char *output_file)
    2. {
    3.   config_t cfg;
    4.   int ok;
    5.  
    6.   config_init(&cfg);
    7.   config_set_include_dir(&cfg, "./testdata");
    8.  
    9. ...
     
  5. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    а вы попробуйте проект создать. я в этот файл смотрел
     
  6. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    art
    Описание проблемы на грани фантастики. Вопрос, который порождает десяток ответных вопросов.
    Кто там undefined reference? config? Или config_init? Или может config_t? Или main?
    Что за компилятор? На какой системе происходит сборка? Каким образом установлена libconfig? Какова командная строка сборки и какие флаги линкера она содержит?
     
  7. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    > Кто там undefined reference?

    undefined reference to config_init

    > Что за компилятор?

    gcc

    > На какой системе происходит сборка?

    debian

    > Каким образом установлена libconfig?

    распаковал и скопировал в нужную директорию

    > Какова командная строка сборки и какие флаги линкера она содержит?

    никаких флагов не содержит. Я подключил h-файл и все.
     
  8. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    art
    а либу ты подключил/собрал? имхо, книжки читать.
     
  9. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    > ибу ты подключил/собрал?

    Нет. А как это сделать?
     
  10. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    Я собираю при помощи pkg-config. Все это выглядит так:

    gcc 'pkg-config --cflags libconfig' main.c -o main \
    'pkg-config --libs libconfig'

    Пишет:

    No surch file or direcotry.

    Хотя в этой директории находится libconfig
     
  11. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    art
    маны покури
     
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    код не верен, указаетель должен на что-то указывать... это раз...

    никак не относится к:
    это два...

    собирай код с файлами из папки lib или собирай либу отдельно и линкуй с ней... это три...
    ЗЫ плохо, очень плохо...
     
  13. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    я предлагаю добавить кнопку [нубство]
     
  14. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    GoldFinch
    да ладно, парень старается, пусть еще маны покурит
     
  15. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    art
    Ты не подключил библиотеку.
    В gcc для подключения библиотеки libconfig надо добавить флаг -lconfig. Но libconfig использует pkg-config, что всё упрощает. Надо в командную строку вызова gcc добавить
    Код (Text):
    1. `pkg-config --libs --cflags libconfig`
    Но для того, чтобы pkg-config сработал бы, надо поставить libconfig правильно. Так как принято в дебиан. Надо почитать про методы установки софта в дебиане. Если это слишком сложно, то можно поставить неправильно, но так, чтобы работало: скачать сорцы libconfig, распаковать их, зайти в полученную директорию и выполнить команды:
    Код (Text):
    1. ./configure --prefix=/usr
    2. make
    3. make install
    Мне, почему-то кажется, что дело в том, что pkg-config не установлен. Дебиан ведь система заточенная на установку из сорцов, так? Поэтому средства разработки могут быть и не установлены по-умолчанию. То есть мне кажется, что libconfig уже должен быть установлен в системе. Правда быть может без заголовочных файлов, но это исправляется установкой пакета типа libconfig-devel или что-нибудь в этом роде. Не знаю как это в делается именно в дебиан.
    А там не пишется, какого именно file or directory нету? pkg-config или main.c? Или может быть libconfig.h? Или libconfig.pc?
     
  16. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Зачем вообще весь этот бред? :) Есть же Boost.Property Tree
     
  17. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    _DEN_
    Непортабельно. Доступно исключительно программам на C++.
     
  18. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    > Мне, почему-то кажется, что дело в том, что 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
     
  19. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    art
    Я не знаю, как можно получить такие надписи. Если pkg-config не находит нужного ему .pc файла, он зело многословно ругается. Совсем иначе. Примерно так:
    Код (Text):
    1. $ pkg-config --cflags жопа
    2. Package жопа was not found in the pkg-config search path.
    3. Perhaps you should add the directory containing `жопа.pc'
    4. to the PKG_CONFIG_PATH environment variable
    5. No package 'жопа' found
    Если же bash или make не нашли бы pkg-config, они бы писали про "command not found".

    Так что ошибка, возникающая у тебя, загадочна и поразительна. И, как назло, моя телепатическая связь с твоим компьютером неустойчива. Я не могу понять в чём дело.

    Но ты попробуй запустить консольку и выполнить каждую команду по-отдельности. Вгони в консольку команды:
    Код (Text):
    1. pkg-config --cflags atk
    2. pkg-config --cflags libconfig
    И посмотри когда и на чём это дело сфейлится. И сфейлиться ли.
     
  20. art

    art New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2010
    Сообщения:
    80
    Если отдельно выполнять команды. то выводит следующие:

    Код (Text):
    1. $ pkg-config --cflags жопа
    2. Package жопа was not found in the pkg-config search path.
    3. Perhaps you should add the directory containing `жопа.pc'
    4. to the PKG_CONFIG_PATH environment variable
    5. No package 'жопа' found
    Хотя в PKG_CONFIG_PATH я прописал путь к библиотеке