Когда я хочу скомпилировать программу в Linux из исходного кода, для которого нет пакета, часто встречаются библиотеки, которые необходимо установить с более высокой версией, чем та, которая доступна в стандартных репозиториях. Вместо использования внешних репозиториев я предпочитаю компилировать эти обновленные библиотеки из исходного кода.
Как мне настроить-> make-> sudo make установить дополнительные необходимые библиотеки и финальную программу, чтобы все обновленные библиотеки и новая программа были установлены в отдельной папке в моем домашнем каталоге и чтобы ТОЛЬКО новая программа использовала эти библиотеки?
Сначала скомпилируйте библиотеку:
./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.
Других решений пока нет …