Предоставьте файл *.pc для pkg-config

Привет, у меня возникла проблема с недавно установленным дистрибутивом Fedora Linux. Предполагается, что pkg-config предоставляет флаги компоновщика, что-то вроде pkg-config --cflags libboost-dev. Но pkg-config не может найти большинство пакетов библиотек. pkg-config --list-all показывает, что он может найти только несколько пакетов.

Я поискал в Интернете и узнал, что pkg-config находит пакеты, ища файлы *.pc по предопределенным путям. Однако для большинства пакетов (как предустановленных, так и установленных пользователем) такого файла .pc нет. Таким образом, файл *.pc не создается каждый раз при установке пакета.

1. Как я могу предоставить файл .pc для каждого из уже установленных пакетов? 2. Как я могу убедиться, что при каждой установке нового пакета предоставляется файл .pc?


person yu quan    schedule 10.10.2015    source источник
comment
Я использую dnf (ранее yum в Fedora) для установки большинства пакетов.   -  person yu quan    schedule 10.10.2015
comment
Вы устанавливаете пакеты xyz-devel, а не только xyz? Я думаю, что пакеты разработки предоставляют файлы .pc, поскольку они также устанавливают заголовки - обычные пакеты обычно не   -  person chrisb2244    schedule 10.10.2015
comment
Я пробовал boost, gsl, они оба используются для разработки кода на С++, но не имеют файлов .pc.   -  person yu quan    schedule 10.10.2015
comment
Я имею в виду попробовать (например) sudo dnf install boost-devel или подобное   -  person chrisb2244    schedule 10.10.2015
comment
@ chrisb2244, неплохо, gsl-dev можно найти с помощью pkg-config, а boost-dev — нет. Могу я также спросить, какова типичная разница между версией для разработчиков и соответствующей версией без разработчиков?   -  person yu quan    schedule 10.10.2015
comment
Fedora (и я думаю, что многие дистрибутивы) используют -devel для различения пакетов, содержащих заголовочные файлы, то есть те, которые вы бы #include собирали при сборке c и c++ программ. Как devel, так и стандартные пакеты включают двоичные файлы (исполняемые программы, которые что-то делают) и библиотеки (с которыми вы можете связать двоичные файлы, то есть они содержат некоторый набор инструкций, сообщающих программе, как что-то делать). Файлы заголовков часто заканчиваются на .h, .H, .hpp, .hxx или подобными, в отличие от исходных файлов, которые могут заканчиваться на .c, .C, .cpp, .cxx и т. д.   -  person chrisb2244    schedule 10.10.2015
comment
Это означает, что если у меня есть версии без del, я не могу включать заголовки, следовательно, не могу использовать библиотеки в своем коде? @chrisb2244   -  person yu quan    schedule 11.10.2015
comment
Справа — см. ссылку это руководство по упаковке Fedora для получения информации о концепции, используемые в Fedora. Раздел непосредственно выше также описывает -devel пакеты   -  person chrisb2244    schedule 11.10.2015


Ответы (1)


рекомендации Fedora по созданию пакетов содержат информацию о способе создания пакетов и файлах, которые они должен содержать.

Раздел о -develпакетах особенно актуален.

Чтобы выделить некоторые части

Есть несколько типов файлов, которые почти всегда принадлежат пакету -devel:

  • Заголовочные файлы (foo.h), обычно находящиеся в /usr/include
  • Файлы статической библиотеки, если в пакете нет соответствующих файлов общей библиотеки. Дополнительные сведения об этом сценарии см. в разделе Packaging:Guidelines#Packaging_Static_Libraries.
  • Файлы общей системной библиотеки без версии, если также присутствует соответствующий файл общей системной библиотеки с соответствующей версией.

В следующем разделе, посвященном файлам Pkgconfig, страница сообщает читатель, который

Размещение файлов pkgconfig(.pc) зависит от их варианта использования. Поскольку они почти всегда используются в целях разработки, их следует поместить в пакет -devel.

Разумным исключением является случай, когда сам основной пакет представляет собой средство разработки, не установленное в пользовательской среде выполнения, например. gcc или gdb.

В результате, чтобы получить либо заголовочные файлы в #include, либо .pc файлы, сообщающие вам флаги компилятора, вам понадобится пакет xyz-devel, где xyz — имя стандартного пакета.

Полезным веб-сайтом, на котором можно найти подходящие имена пакетов для установки, если вы не можете/не хотите их угадывать, является страница поиска пакетов Fedora.

person chrisb2244    schedule 11.10.2015