2009-08-14 11 views
0

Mon répertoire personnel est partagé entre plusieurs ordinateurs Linux via Network File System. Je voudrais installer une bibliothèque C C++ de la source sous mon répertoire de base, et je souhaite qu'ils puissent être utilisés sous tous les ordinateurs Linux. Dois-je installer différentes versions de la bibliothèque sous différents répertoires de mon Home pour différents ordinateurs?Installation de la bibliothèque C++ sous HOME partagée via le système de fichiers réseau

En supposant que j'ai un programme C C++ qui appelle ces bibliothèques, comment puis-je spécifier différents fichiers et répertoires d'inclusion et de liaison pour différents ordinateurs dans Makefile? Est-ce pour déterminer les répertoires en fonction du nom d'hôte de l'ordinateur?

Est-il possible de combiner les différentes versions des fichiers .a et .so et des fichiers d'en-tête de la librairie pour différents ordinateurs linux afin que les fichiers et répertoires d'inclusion et de liaison de la bibliothèque soient identiques pour tous les ordinateurs Je n'ai pas à spécifier des répertoires différents pour différents ordinateurs dans le Makefile de mon programme C C++?

Merci pour votre intérêt!

Répondre

0

Ceci est facile et commun. Par C++ je suppose que vous voulez dire que vous avez compilé des bibliothèques avec un compilateur C, et celles compilées avec un compilateur C++.

Si la version du compilateur que vous utilisez est la même, vous n'avez pas besoin de bibliothèques différentes pour chaque version. Si elles sont différentes, il peut toujours être possible d'utiliser les mêmes bibliothèques C, mais C++ devient plus problématique.

Si les fichiers se trouvent dans votre répertoire personnel, le plus simple dans Makefile est de faire tous les chemins relatifs à $ HOME. Cette variable d'environnement doit être définie correctement sur chaque système.

Si vous avez besoin de référencer différentes bibliothèques sur les différentes machines, le plus simple serait de les placer dans un répertoire portant le même nom que le nom d'hôte. Quelque chose comme ceci:

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

Vous pourriez faire quelque chose de plus de fantaisie en extrayant le numéro de version gcc et en utilisant, mais il est probablement trop pour seulement quelques machines.

+0

Merci! Les versions gcc sont différentes pour les deux machines. Pour le premier, il s'agit de gcc/g ++ 3.4.6 20060404 (Red Hat 3.4.6-10); pour le second, c'est gcc/g ++ (Ubuntu 4.3.2-1ubuntu12) 4.3.2. La première machine est CentOS version 4.7 (Final) et x86_64, et la seconde Ubuntu 8.10 et x86_64. Si je dois installer la bibliothèque dans différents répertoires, comment les spécifier pour différentes machines dans Makefile? Merci – Tim

Questions connexes