LINUX.ORG.RU

libconfig. Проблемы


0

1

Для своего приложения использую libconfig. При сборке приложения возникают проблемы. Установил libconfig и pkg-config

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

выдает ошибку:

cc1:error:unrecognized command line option '-fcflags' cc1:error:unrecognized command line option '-flibs'

Если отдельно ввожу:

pkg-config --cflags libconfig выводит: -I/usr/local/include

pkg-config --libs libconfig выводит: -L/usr/local/lib -lconfig

Дистрибутив: Альт Линукс 5.0 Сервер

man bash на предмет command substitution.

Правильный вариант:
gcc `pkg-config --cflags --libs libconfig` main.c -o main

^ кавычки.

uzbl
()
Ответ на: комментарий от uzbl

Похоже на то, но скорее всего с путями проблема. Потому что если я задаю

gcc $(pkg-config --cflags --libs libconfig) main.c -o main

Выдает ошибку: main.c(.text+0x11) undefined reference to 'config_init' collect2: ld returned 1 exit status

если набираю:

gcc $(pkg-config --cflags libconfig) main.c -o main \ $(pkg-config --libs libconfig)

выдает ошибку: gcc: -L/usr/local/lib: No such file or direcotry

Это с путями проблема?

art_demidoff
() автор топика
Ответ на: ответ от art_demidoff

> Пробовал и с кавычками:
Кавычки должны быть «обратными». Такие кавычки обычно распологаются на той же клавише, где и тильда (~); левее клавиши «1»; под Esc.

Впрочем, экранирование через $() на мой взгляд значительно нагляднее... особенно если надо делать вложенные подстановки :)

Slavaz ★★★★★
()
Ответ на: комментарий от uzbl

скомпилировалась и получил объектный файл. Но при запуске объектного файла выдает ошибка:

./main:error while loading shared librares: libconfig.so.9: cannot open shared object file: No such file or directory.

это я уже даже и я уже даже не знаю с чем связано)))

art_demidoff
() автор топика
Ответ на: комментарий от art_demidoff

Динамические библиотеки http://ru.wikipedia.org/wiki/Библиотека_(программирование) ldd main http://www.opennet.ru/man.shtml?topic=ldd&category=1 /sbin/ldconfig -p | grep libconfig || find / -name 'libconfig*' http://www.opennet.ru/cgi-bin/opennet/man.cgi?topic=ld.so&category=8 http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program pkg-config --list-all | grep libconfig gcc -static main.c -o main $(pkg-config --cflags --libs --static libconfig)

anonymous
()
Ответ на: комментарий от anonymous

> LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program pkg-config --list-all | grep libconfig gcc -static main.c -o main $(pkg-config --cflags --libs --static libconfig)

Что означает эта строка, например у меня выдает ошибку

art_demidoff
() автор топика
Ответ на: комментарий от art_demidoff

>Что означает эта строка, например у меня выдает ошибку
Перенос строк опущен.
LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH my_program
pkg-config --list-all | grep libconfig
gcc -static main.c -o main $(pkg-config --cflags --libs --static libconfig)
Смотрите ссылки

./main:error while loading shared librares: libconfig.so.9: cannot open shared object file: No such file or directory.

Динамический загрузчик /lib/ld-linux.so.2 не может найти динамическую библиотеку libconfig.so.9.
-определяем какие динамические библиотеки нужны Вашей программе main
ldd main
-проверяем содержит ли /etc/ld.so.cache нужную библиотеку
/sbin/ldconfig -p | grep libconfig
-при отсутствие библиотеки в кеш-файле /etc/ld.so.cache находим расположение библиотеки
find / -name 'libconfig*'
либо добавляем /путь_к_библиотеки/ в /etc/ld.so.cache и выполняем /sbin/ldconfig от root пользователя, либо устанавливаем переменную LD_LIBRARY_PATH перед запуском программы LD_LIBRARY_PATH=/lib:/usr/lib:/путь_к_библиотеки/ main
-pkg-config --list-all | grep libconfig покажет знает ли pkg-config о библиотеки libconfig
-можно попробовать «собрать программу статически»
gcc -static main.c -o main $(pkg-config --cflags --libs --static libconfig)
-

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.