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

Répondre à