LINUX.ORG.RU
ФорумAdmin

Как работает pkg-config в случае multilib?

 , ,


0

2

Есть разные директории:
/usr/lib/
/usr/lib64/
/usr/libx32/

Первые две директории описаны тут
Последняя директория нужна для архитектуры x32

В интернете советуют:

To see where pkg-config (version 0.24 or later) searches for installed libraries by default, use the following command:

$ pkg-config --variable pc_path pkg-config
/usr/lib64/pkgconfig:/usr/share/pkgconfig 

И если с директорией /usr/share/pkgconfig вопросов нет - она платформонезависимая, то вот с первой директорией вопросы есть.

Как будет работать .ebuild, который опирается на automake, которая использует pkg-config, в случае установки для нескольких платформ (x64, x32)? Ведь pkg-config один на всех и установлен он в /usr/bin.

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

Но ты не умеешь и не хочешь читать

Видишь ли, в моём мане написано другое. Два различия:
1) там ещё есть 2 директории в /usr/local/ но это ладно, я бы пережил.
2) там написано, что переменная PKG_CONFIG_PATH дополняет (а не замещает) список директорий.

А мне не надо так. Мне не надо, чтобы была доступна lib и lib64 одновременно, к примеру (или lib и libx32).

Точнее было написано, потому что сейчас у меня нет pkgconfig, а есть pkgconf

Einstok_Fair ★★☆
() автор топика
Последнее исправление: Einstok_Fair (всего исправлений: 1)
Ответ на: комментарий от anonymous

Об этом написано в манах.

Вот, цитирую на свежую голову:
$ man pkg-config | grep -B 2 -A 3 PKG_CONFIG_PATH

       pkg-config retrieves information about packages from special metadata files. These files are named after the package, and has a .pc extension.  On most systems, pkg-con‐
       fig looks in /usr/lib/pkgconfig, /usr/share/pkgconfig, /usr/local/lib/pkgconfig and /usr/local/share/pkgconfig for these files.  It will additionally look in the  colon-
       separated (on Windows, semicolon-separated) list of directories specified by the PKG_CONFIG_PATH environment variable.

       The package name specified on the pkg-config command line is defined to be the name of the metadata file, minus the .pc extension. If a library can install multiple ver‐
       sions simultaneously, it must give each version its own name (for example, GTK 1.2 might have the package name "gtk+" while GTK 2.0 has "gtk+-2.0").
--

ENVIRONMENT VARIABLES
       PKG_CONFIG_PATH
              A  colon-separated  (on  Windows, semicolon-separated) list of directories to search for .pc files.  The default directory will always be searched after searching
              the path; the default is libdir/pkgconfig:datadir/pkgconfig where libdir is the libdir for pkg-config and datadir is  the  datadir  for  pkg-config  when  it  was
              installed.

It will additionally look
additionally

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

Видишь ли, в моём мане написано другое. [...] Точнее было написано, потому что сейчас у меня нет pkgconfig, а есть pkgconf

У меня под Арчем тоже pkgconf по умолчанию, и у него ман не очень подробный. Но я открыл сорцы мана и прочитал:

.I "PKG_CONFIG_LIBDIR"
Replaces the default
.I pkg-config
search directory, usually
.IR /usr/lib/pkgconfig : /usr/share/pkgconfig .

Потом открыл патчи в пакете Дебиана и нашел там враппер, который манипулирует переменной PKG_CONFIG_LIBDIR для поддержки мультилиба.

Лень смотреть, как сделано в Генте, но думаю, аналогично.

Так что читай маны внимательнее.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Deleted

Replaces the default

Ну и что? Я же процитировал выше, что в моём мане написано:

The default directory will always be searched after searching the path
always

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

The default] directory will always be searched...

Replaces the default...

Что тебе непонятно?

В дефолтные пути заглядывает всегда, но значение дефолтного пути можно заменить на нужное тебе.

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

Иными словами, когда ты просто добавляешь нестандартные пути к уже развернутому сборочному окружению, то используешь PKG_CONFIG_PATH.

А когда переопределяешь сборочное окружение целиком, как в случае с мультилибом, то используешь PKG_CONFIG_LIBDIR.

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

Спасибо.

Если за что сказать, не то что этому анонимусу. В чём разница? В том, что это ответ на МОЙ вопрос, а не то, о чём хочется рассказать ЕМУ.

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