Подумайте про коригування змінної середовища PKG_CONFIG_PATH, якщо ви встановили програмне забезпечення у нестандартний префікс. Що це значить ?
Подумайте про коригування змінної середовища PKG_CONFIG_PATH, якщо ви встановили програмне забезпечення у нестандартний префікс. Що це значить ?
Відповіді:
PKG_CONFIG_PATH- це змінна середовище, яка визначає додаткові шляхи, в яких pkg-configбуде шукати файли .pc.
Ця змінна використовується для розширення пошукового шляху за замовчуванням pkg-config. У типовій системі Unix він здійснюватиме пошук у каталогах /usr/lib/pkgconfigта /usr/share/pkgconfig. Зазвичай це охоплює встановлені в системі модулі. Однак деякі локальні модулі можуть бути встановлені з іншим префіксом, таким як /usr/local. У цьому випадку потрібно додати шлях пошуку, щоб pkg-config міг знайти файли .pc.
pkg-configПрограма використовується для отримання інформації про встановлені бібліотек в системі. Основне використання - pkg-configце надання необхідних деталей для складання та прив'язки програми до бібліотеки. Ці метадані зберігаються у файлах з налаштуваннями pkg. Ці файли мають суфікс .pc і перебувають у певних місцях, відомих інструменту pkg-config.
Щоб перевірити PKG_CONFIG_PATHзначення, використовуйте цю команду:
echo $PKG_CONFIG_PATH
Щоб встановити PKG_CONFIG_PATHзначення, використовуйте:
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
або
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
Перша відповідь технічно не явна. На вхідній сторінці (відкрийте термінал, введіть man pkg-config):
pkg-configотримує інформацію про пакети із спеціальних файлів метаданих. Ці файли названі за пакетом і мають.pcрозширення. У більшості систем,pkg-configвиглядає/usr/lib/pkgconfig,/usr/share/pkgconfig,/usr/local/lib/pkgconfigі/usr/local/share/pkgconfigдля цих файлів. Він буде додатково шукати у розділеному двокрапкою (у Windows, розділеному крапкою з комою) списку каталогів, визначенихPKG_CONFIG_PATHзмінною оточення.
Отже pkg-configпрограма не знаходиться в PKG_CONFIG_PATHкаталозі; однак, якщо ви встановлюєте бібліотеку, для інформації, щоб використовувати її в automakeскрипті, вона була доступною, вона повинна бути в каталозі pkg-config.
/usr/local/lib/x86_64-linux-gnuяк автоматичне місце пошуку безкоштовно (з порожнім PKG_CONFIG_PATH), і справді, багато .pcфайлів - помітні, включаючи GTK + та ін. - жити там. Причина цього полягає в тому, щоб одночасно включити доступність пакету для багатьох архітектур, як зазначено тут: askubuntu.com/questions/449348/…
pkg-configшукатимуть у вашій системі: askubuntu.com/a/373217/436580
Щоб побачити, де pkg-config (версія 0.24 або пізніша) шукає встановлені бібліотеки за замовчуванням, скористайтеся такою командою:
pkg-config --variable pc_path pkg-config
Щоб змінити цей шлях, встановіть PKG_CONFIG_PATHзмінну середовища. У файлі man зазначено PKG_CONFIG_PATH:
Розділений двокрапкою (у Windows, розділений крапкою з комою) список каталогів для пошуку .pc-файлів. Каталог за замовчуванням завжди буде шукати після пошуку шляху; за замовчуванням - libdir / pkgconfig: datadir / pkgconfig, де libdir - libdir, де pkg-config та datadir - це datadir, де встановлено pkg-config.
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATHта все ще мати каталоги, що шукаються за замовчуванням, плюс встановлення непорожнього значення не знімає значення за замовчуванням.
Ви намагаєтеся скласти частину програмного забезпечення, скажімо віджет. За допомогою аргументу віджет покладається на іншу бібліотеку, libcog. Процес збирання віджетів (можливо, сценарій налаштування) використовує pkg-config для визначення способу використання libcog. pkg-config нічого не знає про libcog.
Якщо libcog не встановлений, це ваша проблема. Є хороший шанс, що стандартна установка libcog виправить проблему. Залежно від вашої системи, вам може знадобитися встановити додаткову версію пакета для розробників; у нього часто є "-devel" або "-dev" в кінці, тому якщо ви встановите "libcog", вам може знадобитися також встановити "libcog-devel".
Якщо libcog встановлений, він, ймовірно, не встановлений таким чином, що pkg-config може його знайти. Напевно, десь у вашій системі є файл libcog.pc. Заради аргументів це за адресою /opt/cog/lib/pkgconfig/libcog.pc. У цьому випадку ви можете повідомити pkg-config про це, встановивши PKG_CONFIG_PATH в каталог, що містить libcog.pc. Отже, в оболонці Борна чи подібному, щось подібне
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
Після цього, сподіваємось, повторна робота команди, яка не вдалася, спрацює.
Якщо встановлено libcog, включаючи бібліотеки та файли заголовків, а у вас немає файлу libcog.pc, справи йдуть погано. Імовірно, стандартна установка libcog включає інформацію, інакше віджет не покладається на неї. Я б спершу дослідив перевстановлення libcog. Файл libcog.pc можна створити вручну вручну, але виправити це правильно важко і дуже специфічно для даної бібліотеки.
Я переглянув man-сторінку моєї 64-бітної системи і трохи розгубився. В одному рядку написано:
pkg-config витягує інформацію про пакети із спеціальних файлів метаданих. Ці файли названі на честь пакета з розширенням .pc. За замовчуванням pkg-config шукає в цьому файлі префікс / lib / pkgconfig для цих файлів; він також буде виглядати в розділеному двокрапкою (у Windows, розділеному крапкою з комою) списку каталогів, визначених змінним середовищем PKG_CONFIG_PATH.
Я припускав, що він завжди виглядає в каталогах lib / pkgconfig. Виявляються самі довідники. У моєму випадку я намагався скласти навчальний посібник з hello world gtk. Я знаходжу потрібний файл, наприклад
locate gtk | grep '\.pc'
Серед результатів:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
Нарешті було зробити експорт.
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
manсторінка є надто спрощеною для сучасних систем, що підтримують багато архітектури. Я деякий час був плутаний, тому що на Debian 8 x86 pkg-configвже виглядає в папці x86_64 (без нічого в ньому PKG_CONFIG_PATH). Я не впевнений, як це було включено, але командний рядок для зондування цього, показаного @GrandAdmiral, вказує, що це контролюється тим, --variable pc_pathщо встановлено (якось!) Для pkg-configвласного пакету.
Мені здається, що більшість відповідей мають занадто багато інформації, ніж потрібно.
Програмне забезпечення, яке встановлюється, може (і зазвичай) покладається на деякі бібліотеки та / або заголовки, і Система використовує pkg-config для їх пошуку.
Згадане так, pkg-configшукає ці файли в заздалегідь визначених (за замовчуванням) системних каталогах. Ці папки є "префіксом". Наприклад, /usr/localочікується, що бібліотека, що має префікс , має заголовки /usr/local/include, а сама бібліотека - в /usr/local/lib.
pkg-config однак шукає бібліотеки також у каталозі, переліченому в змінній середовища PKG_CONFIG_PATH .
Тоді, якщо ви встановлюєте програмне забезпечення поза списком папок за замовчуванням, вам довелося "скорегувати" список, а саме додати свої каталоги до PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
Для отримання додаткової інформації, ви можете подивитися тут і тут
PKG_CONFIG_PATHзадає додаткові каталоги, в яких можна шукати лише yourPkg.pc ( pkg-configспецифікаційні) файли. Це не впливає на специфічні для pkg речі, такі як каталоги пошуку в бібліотеці.
Я намагався встановити останню версію axel, і я побіг, ./configureі мені це було:
configure: error: Package requirements (openssl) were not met:
No package 'openssl' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables SSL_CFLAGS
and SSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Тому я спробував:
$ pkg-config --cflags openssl
і я отримав:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found
Як очевидно, у мене був встановлений openssl ( sudo apt-get install openssl). Але, як ви бачите, на наведеному вище висновку зазначено "Не знайдено жодного пакета" openssl ". Отже, щоб переконатися, що я зробив:
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
Виявляється, мені потрібен ще якийсь пакет, тому я трохи погуглився, і я виявив, що мені довелося встановити цей пакет:
sudo apt-get install libssl-dev
І все це не мало нічого спільного зі зміною змінної pkg-config path env.
Ті, хто використовує https://github.com/confluentinc/confluent-kafka-go
Будь ласка, дотримуйтесь встановлення librdkafka
Тепер ви можете використовувати go install / go run go build