Как скомпилировать дополнительные / обновленные библиотеки плюс новую программу в отдельном / автономном каталоге в Linux

Когда я хочу скомпилировать программу в Linux из исходного кода, для которого нет пакета, часто встречаются библиотеки, которые необходимо установить с более высокой версией, чем та, которая доступна в стандартных репозиториях. Вместо использования внешних репозиториев я предпочитаю компилировать эти обновленные библиотеки из исходного кода.

Как мне настроить-> make-> sudo make установить дополнительные необходимые библиотеки и финальную программу, чтобы все обновленные библиотеки и новая программа были установлены в отдельной папке в моем домашнем каталоге и чтобы ТОЛЬКО новая программа использовала эти библиотеки?

0

Решение

Сначала скомпилируйте библиотеку:

./configure --prefix=$HOME/myapp
make
make install

Обратите внимание, что «sudo» не требуется, поскольку вы устанавливаете в свой домашний каталог.

Теперь вам нужно настроить компиляцию приложения, чтобы оно находило только что установленную библиотеку. Если приложение, которое вы собираетесь скомпилировать, также использует automake, посмотрите на справку:

./configure --help

Ищите что-то вроде опции, чтобы указать путь к библиотеке.

Если вы не можете указать путь к библиотеке, установите переменную среды CPATH, чтобы она указывала на каталог включения библиотеки, а LIBRARY_PATH — на подкаталог, в котором находятся lib-файлы. Что-то вроде:

export CPATH=$HOME/myapp/include
export LIBRARY_PATH=$HOME/myapp/lib

Если вы все собрали / установили, вы сделали сложную часть. Теперь, если это динамический исполняемый файл, вам нужно только указать динамическому компоновщику, где найти lib-файлы. Сделайте это, установив переменную среды LD_LIBRARY_PATH в тот же каталог, на который указывает переменная среды LIBRARY_PATH.

export LD_LIBRARY_PATH=$HOME/myapp/lib

Посмотрите страницу справочника gcc для получения дополнительной информации о переменных окружения CPATH и LIBRARY_PATH. Информацию о переменной среды LD_LIBRARY_PATH смотрите на странице руководства ld.so.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector