1

Я создал библиотеку C (скомпилированную из исходного кода) ниже моей домашней папки, и теперь мне нужно создать новый пакет, который зависит от этой библиотеки. При запуске скрипта настройки я получаю сообщение об ошибке
configure: error: The required <package> library was not found.

Есть ли переменная окружения, которую я могу редактировать, чтобы мой скрипт выполнял поиск по пути к библиотеке?

Я уже пробовал LD_LIBRARY_PATH

2 ответа2

3
  • Многие библиотеки используют pkg-config, поэтому укажите, где найти локально установленные файлы .pc :

    export PKG_CONFIG_PATH = " $ LOCAL/lib/pkgconfig:$ LOCAL/share/pkgconfig"
    

    (Общесистемные каталоги будут включены автоматически.)

    Иногда вместо общей команды pkg-config используется специфичная для библиотеки команда; например, krb5-config. В этом случае укажите каталог вашего bin :

    export PATH = " $ LOCAL/bin:$ PATH"
    
  • Если pkg-config не используется, вам придется вручную указать компилятор и компоновщик в нужном месте.

    export CFLAGS = "- I $ LOCAL/include" # для экспорта компилятором C CXXFLAGS = "- I $ LOCAL/include" # # для экспорта компилятора C++ LDFLAGS = "- L $ LOCAL/lib" # для компоновщика
    
  • ./configure --help обычно перечисляет серию --with-feature=... , которые позволяют указывать расположение каждой библиотеки отдельно.

    Часто ./configure --help также перечисляет переменные среды для каждой библиотеки (например, CURL_CFLAGS и CURL_LIBS); ищите "флаги компилятора C" или "флаги компоновщика" в тексте справки.

    Если вам часто требуется более одной пользовательской библиотеки, это быстро станет неудобным; вместо этого вы должны указать путь к pkg-config и cflags для всех библиотек одновременно.

  • Вам также может понадобиться указать загрузчику местоположение вашей библиотеки во время компиляции. Для Linux это будет:

    export LD_LIBRARY_PATH="$LOCAL/lib"
    

    Это не должно быть необходимо при запуске скомпилированных программ; компоновщик добавит правильные пути к самому скомпилированному двоичному файлу (ищите "Library rpath" в readelf -d yourprogram если вы хотите проверить).

    Для Mac OS X настройка DYLD_LIBRARY_PATH должна иметь аналогичный эффект; otool может быть использован для проверки приложений.


Во всех приведенных выше примерах $LOCAL будет префиксом, который вы использовали при установке библиотек; например, если вы сделали ./configure --prefix ~/usr , используйте здесь ~/usr.

0

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

LD_LIBRARY_PATH будет использоваться после компиляции, так что вы сможете найти библиотеку во время выполнения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .