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

0

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

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

Теги:
makefile
install
configure

1 ответ

0

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

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

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

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

./configure --help

Посмотрите на что-то вроде опции указать путь к библиотеке.

Если вы не найдете способа указать путь к библиотеке, установите переменную среды CPATH, чтобы указать каталог include библиотеки и 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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню