Aller au contenu | Aller au menu | Aller à la recherche

Problème dans l'utilisation des multilib avec gcc

J'ai fait une lib toute bête, avec une fonction void display(void) dedans, et j'essaie de linker mon prog avec differents parametres:

gcc monprog.c -t -lmalib : repertoires de base avec lib .
gcc monprog.c -t -m68020 -lmalib : repertoires de base avec libs m68020
gcc monprog.c -t -m68020-60 -lmalib : repertoires de base avec libs m68020-60

Donc pour l'instant, tout est ok, maintenant si je precise que ma lib se trouve dans un repertoire différent des autres libs, avec -L:

gcc monprog.c -t -Lmalib -lmalib : repertoires avec lib . et ajout de malib comme repertoire pour linker ma lib
gcc monprog.c -t -m68020 -Lmalib -lmalib : repertoires de base avec libs m68020 et ajout de malib comme repertoire pour linker ma lib
gcc monprog.c -t -m68020-60 -Lmalib -lmalib : repertoires de base avec libs m68020-60 et ajout de malib comme repertoire pour linker ma lib

Donc a priori, la aussi tout va bien, le probleme c'est quand le repertoire passé en parametre de -L est l'un des repertoires de base, genre /usr/lib ou /usr/local/lib et qui contient d'autres librairies:

En supposant que j'ai installé malib dans /usr/lib par exemple:

gcc monprog.c -t -L/usr/lib -lmalib : utilisation seulement de /usr/lib
gcc monprog.c -t -m68020 -L/usr/lib -lmalib : utilisation seulement de /usr/lib
gcc monprog.c -t -m68020-60 -L/usr/lib -lmalib : utilisation seulement de /usr/lib

Donc a priori -L desactive la generation des repertoires pour multilib, pour le repertoire concerné. Je suppose que gcc fait le menage pour supprimer les repertoires en double dans ceux qu'il va utiliser, le pb, c'est que dans ce cas, les rep pour le multilib ne sont plus utilisés.

Le fichier libgcc.a qui se trouve dans un repertoire interne de gcc n'est pas impacté, donc je pense que c'est ce qui arrive, et que la aussi le multilib serait désactivé si on ajoutait -L/repertoire/de/libgcca.

Je suppose que ca doit etre la meme chose pour gcc 4.3 et les binutils 2.18, je n'ai pas testé.

C'est un gros probleme, quand on utilise des libs dans un programme, dont les parametres de linkage sont renvoyés par un script malib-config, ou par pkg-config, comme par exemple SDL.