Установите библиотеку C C++ в разделе HOME, доступном через сетевую файловую систему.

Мой домашний каталог используется несколькими Linux-компьютерами через сетевую файловую систему. Я хотел бы установить некоторую библиотеку C C++ из исходного кода в свой домашний каталог и хотел бы, чтобы их можно было использовать на всех компьютерах с Linux.

Должен ли я устанавливать разные версии библиотеки в разные каталоги моего дома для разных компьютеров?

Предполагая, что у меня есть программа C C++, которая вызывает эти библиотеки, как мне указать разные включаемые и связывающие файлы и каталоги для разных компьютеров в Makefile? Это для определения каталогов на основе имени хоста компьютера?

Можно ли объединить разные версии файлов .a и .so и заголовочных файлов библиотеки для разных компьютеров Linux, чтобы включаемые и связанные файлы и каталоги библиотеки были одинаковыми для всех компьютеров, и я не нужно указать разные каталоги для разных компьютеров в Makefile моей программы C C++?

Спасибо и привет!


person Tim    schedule 14.08.2009    source источник


Ответы (1)


Это легко и обычно.

Я предполагаю, что под C C++ вы имеете в виду, что у вас есть библиотеки, скомпилированные с помощью компилятора C, и библиотеки, скомпилированные с помощью компилятора C++.

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

Если файлы находятся в вашем домашнем каталоге, проще всего сделать в Makefile все пути относительно $HOME. Эта переменная среды должна быть правильно установлена ​​в каждой системе.

Если вам нужно ссылаться на разные библиотеки на разных машинах, самым простым способом было бы поместить их в каталог с тем же именем, что и имя хоста. Что-то вроде этого:

CXXFLAGS=-I$(HOME)/app/$(HOST)/include

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

person KeithB    schedule 14.08.2009
comment
Спасибо! Версии gcc различаются для двух машин. Для первого это gcc/g++ 3.4.6 20060404 (Red Hat 3.4.6-10); для второго это gcc/g++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2. Первая машина — CentOS версии 4.7 (Final) и x86_64, а вторая — Ubuntu 8.10 и x86_64. Если мне нужно установить библиотеку в разные каталоги, как указать их для разных машин в Makefile? Спасибо - person Tim; 14.08.2009