Le 9 janv. 06 à 14:54, Christian PELISSIER a écrit :
Existe-t-il un tutorial Sun ou une Faq qui indique de manière
synthétique les principales étapes de construction d'une librairie
partagée.
Non, pas que je saches. D'un autre, côté, ce n'est pas très compliqué.
Le principe est simple de compiler en générant du code autonome :
(man cc)
-KPIC
(SPARC) The -KPIC command is equivalent to
-xcode=pic32.
See also -xcode.
(x86) -KPIC is identical to -Kpic .
-Kpic
(SPARC) The -Kpic command is equivalent to
-xcode=pic13.
See also -xcode.
(x86) Generate position-independent code for use in
shared libraries (small model). Permits references to,
at most, 2**11 unique external symbols
(...)
-xcode=v
Specify code address space (SPARC Only).
The values for -xcode are:
abs32 Generate 32-bit absolute addresses.
Code + data + bss size is limited to 2**32
bytes. This is the default on 32-bit architec-
tures: arch=generic,v7,v8,v8a,v8plus,v8plusa
abs44 Generate 44-bit absolute addresses.
Code + data + bss size is limited to 2**44
bytes. Available only on 64-bit architectures:
-xarch=v9,v9a
abs64 Generate 64-bit absolute addresses.
Available only on 64-bit architectures:
-xarch=v9,v9a
pic13 Generate position-independent code for use in
shared libraries (small model).
Equivalent to -Kpic. Permits references to at
most 2**11 unique external symbols on 32-bit
architectures, 2**10 on 64-bit.
pic32 Generate position-independent code for use in
shared libraries (large model).
Equivalent to -KPIC. Permits references to at
most 2**30 unique external symbols on 32-bit
architectures, 2**29 on 64-bit.
The default is -xcode=abs32 for SPARC V8 and V7. The
default is -xcode=abs64 for SPARC and UltraSPARC V9
(with -xarch=v9|v9a).
When building shared dynamic libraries with -xarch=v9
or v9a on 64-bit Solaris 7, a -xcode=pic13 or
-xcode=pic32 option MUST also be specified.
et d'informer le linker (ld) que tu acceptes les undefined symbols
(man ld)
-G In dynamic mode only, produces a shared object. Unde-
fined symbols are allowed.
Utile aussi à savoir, tu as tout à fait le droit de produire des
liens vers d'autres libs (-l) lors de ton link.
Comment lister les modules d'un .so (l'équivalent de ar -t sur
un .a) ?
nm
qui marche pour une lib dynamique comme pour tout binaire
Comment passer d'un .so à un .a
Tu dois pouvoir faire ça avec dump et ensuite ar .
j'ai déjà fait (beurk) mais il y a super longtemps.
Nico
_______________________________________________
Solaris_fr liste de diffusion en français pour Solaris, sur toutes architectures
[email protected]
http://x86.sun.com/mailman/listinfo/solaris_fr