[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-team] linker sous UNIX



Une ch'tite question à propos des ld sous Unix en général...

Bon, voilà le topo:
- j'ai une lib (statique: libxxx.a) composée de plusieurs objets
- certains objets de cette lib ont besoin des libs de Tuxedo, mais
  pas tous
- je linke d'autres objets avec cette lib: mes objets n'utilisent que
  des symboles dans des .o de la lib qui eux-mêmes n'ont pas besoin de
  Tuxedo, mais quand je linke la lib, le linker a quand même besoin des
  libs Tuxedo... ?!?

En clair:
- quand, lors du link, j'attire les .o de la lib dont j'ai besoin, ça
  marche;
- quand j'attire la lib .a, il a besoin des libs Tuxedo

Est-ce que le linker tape systématiquement tous les objets de la lib dans
l'éxécutable ou bien est-ce qu'il ne linke que les objets de la lib qui
contiennent des symboles dont les autres objets de l'éxécutable ont besoin ?

Donc, j'ai:
- mes objets
1.o
2.o
3.o
- la lib:
libxxx.a
qui contient:
a.o
b.o
c.o

disons que a.o a besoin de libtux.so, mais pas b.o ni c.o

Dans mes objets, je n'ai besoin que de symboles hors de b.o et c.o, pas de a.o
Or, b.o et c.o n'ont pas besoin de libtux.so, donc quand je linke genre:
ld ... 1.o 2.o 3.o .../b.o .../c.o
ça marche, mais quand je fais:
ld ... 1.o 2.o 3.o -L... -lxxx
ça va pas: il veut avoir libtux.so, il faut que je fasse:
ld ... 1.o 2.o 3.o -L... -lxxx -L/opt/tuxedo/lib -ltux

C'est autre chose, ou bien les linkers sous UNIX sont vraiment aussi merdiques ?
J'ai du mal a y croire...

  -o)  Pascal Bleser        | UNIX *is* user friendly.
  /\\  C++/UNIX Development | It's just selective about
 _\_v  ATOS Payment Systems | who its friends are...
pbleser@atos-group.com---------------------------------
---------
This message was sent by Majordomo 1.94.3. Please report problems to
manu@rtfm.be. If you want to be deleted from the list, send a mail to
majordomo@rtfm.be with "unsubscribe linux-team" in the body.