Bonjour tt le monde,
bon déjà désolé de mettre cette discussion ici, je ne suis pas sur que ce soit le bon endroit mais je n'en trouve pas d'autres...

Mon probleme concerne la gestion des differentes versions de librairies et d'include dans un programme C(++ mais bon). Ok, je sais que dans un Makefile, on peut specifier des paths avec -L et -I mais j'ai quand meme un souci...

Bon, j'expose mon souci sur le cas des "include".
Dans mon arbre linux, disons donc que j'ai l'organisation suivante:
#LIBRAIRIE no 1:
/usr/include/LIB_No1/4.1.0
/usr/include/LIB_No1/4.2.1
/usr/local/include/LIB_No1/4.3.2
/usr/local/include/LIB_No1/4.4.1
#LIBRAIRIE no 2:
/usr/include/LIB_No2/3.4
/usr/include/LIB_No2/3.5
/usr/local/include/LIB_No2/3.1
/usr/local/include/LIB_No2/3.2

Supposons que je veuille utiliser les fichiers include de /usr/local/include/LIB_No1/4.3.2 et de /usr/include/LIB_No2/3.4, comment faire???
Bon, ci-dessous un nombre de questions qui me chagrinent...

Probleme no 1:
de ce que je crois, si je definis "-I /usr/local/include" ou "-I /usr/include" dans mon Makefile, le dir complementaire (i.e respectivement /usr/include ou /usr/local/include) ne sera pas inspecte pour mes bibiotheques car des versions ont deja ete trouvees dans le dir specifie (mais PAS les versions que je veux!!)

Probleme no 2:
quand bien meme, je parviens a faire le compilo chercher dans le bon directory, les versions que je souhaite ne sont PAS les versions les plus evoluees (par ex. je veux /usr/include/LIB_No2/3.4 et non /usr/include/LIB_No2/3.5). Or je CROIS(??) qu'en cas de presence multiple, gcc choisit automatiquement la version la plus avancee...?

Remarque 1: mon probleme de depart couple les deux problemes...
Remarque 2: j'ai juste mis 2 directories potentiels (/usr/local/include et /usr/include mais en fait j'en ai beaucoup plus, les autres etant des directories genre /username/perso1/LIB_No1/***...)

Bon, de maniere "annexe", j'ai quelques autres questions plus ou moins liees:

#Q1:
dans nombre de forums et docs (y compris gnu), il est dit que gcc parse
par defaut les dir /usr/include, /usr/local/include, /prefix/include...
Quelqu'un sait-il ou ces repertoires par defaut sont-ils definis? Le .bashrc,
le /etc/profile...??? (aucun des deux en fait, c'etait pour etayer ma
reflexion). J'ai la meme interrogation pour les librairies par defaut (/usr/lib, /usr/local/lib...)

#Q2:
est-il possible, a partir d'une librairie partage style libstdc++.so, de
"remonter" a l'executable g++ et au dir contenant les include "associes"?

#Q3:
de meme, a partir d'un executable final, est-il possible de remonter aux
directories contenant les include effectivement choisis par gcc? Pour
les librairies dynamiques, je connais ldd. Pour avoir trace des fichiers
include, je suis aveugle... Je peux toujours recompiler avec l'option g++ -E mais c'est assez penible car c'est tres verbeux... Et pour les librairies statiques, aucun moyen de trouver trace de celles qui ont ete choisies???

REMARQUE: je pose les questions Q2 et Q3 car je viens d'arriver dans une boite disposant d'un cluster sous redhat sur lequel enormement de logiciels ont ete installe a la main (i.e a partir des sources en gros) car pas connexion internet on m'a dit (je sais c'est pas une excuse). Le probleme est que les installations ont ete gerees un peu n'importe comment (bon c'est facile de critiquer apres coup pour sur, dsl...) et que je suis assez perdu du coup. Pour exemple, j'ai liste une quinzaine de versions libstdc++.so (pas des liens, mais des vrais versions bien en dur ), autant de compilos g++ et de include/c++/version_X.Y.Z... Du coup, je dois faire des mises a jour et plus rien ne compile maintenant et je suis perdu voila...

Bon, j'ai bien conscience que c'est un peu long comme message et surement un peu penible car pas tres sexy mais sincerement un coup de main serait vraiment super sympa......