Я закодировал проект с некоторыми файлами на C. Чтобы упростить пользователю запуск программы, я начал генерировать cfg-файл. По этой причине я установил libconf. К сожалению, при компиляции с примером файла libconfig я получаю это сообщение.
gcc $(pkg-config --cflags --libs libconfig) example1.c -o example1 example.cfg
example1.c: In Function »main«: example1.c:43:13: Warning: Format »%s« expected argumenttyp »char *«, but argument 3 has typ »int« [-Wformat]
.....
Как мне сказали, я установил sudo apt-get install libconfig8-dev и надеялся не устанавливать PKG_CONFIG_PATH. Похоже, что это не правильно компилируется.
Как вы получили и установили libconfig
?
Если вы только что установили пакет libconfig8
, этого недостаточно . Вам также необходимо установить соответствующий ему пакет -dev
, чтобы предоставить файлы разработки (заголовки, статическая библиотека ссылок и данные pkg-config). Я смог найти это для libconfig для точных на packages.ubuntu.com . Таким образом,
sudo apt-get install libconfig8-dev
должны сделать свое дело.
Как вы можете видеть из здесь , список файлов для этого пакета содержит следующий путь к файлу:
/usr/lib/pkgconfig/libconfig.pc
Это именно тот файл, который [ 115] должен быть в состоянии вытащить CFLAGS
и LDFLAGS
, соответствующие libconfig
.
Этот каталог находится по «встроенному» пути поиска pkg-config
из коробки в Ubuntu. По этой причине нет необходимости устанавливать PKG_CONFIG_PATH
. Вы можете установить эту переменную среды только тогда, когда вам нужно pkg-config
искать в каталогах , отличных от , в тех, которые она ищет по умолчанию. Поэтому, если вы скомпилировали программу и установили ее в /home/user/apps/blah
, а файл /home/user/apps/blah/lib/pkg-config/libblah.pc
должен был быть доступен для pkg-config
, вы должны установить:
export PKG_CONFIG_PATH=/home/user/apps/blah/lib/pkg-config/libblah.pc
, чтобы pkg-config
обнаружил, что установка libblah.pc
.
Однако, поскольку вы устанавливаете libconfig
из самой Ubuntu , он автоматически "вставит" файл .pc в правильный каталог поиска.