• [^] # Re: Option -static-libgfortran

    Posté par (site web personnel, Mastodon) . En réponse au journal Encore des nouvelles de Fortran. Évalué à 2.

    Petite expérimentation :

    $ gfortran pi_monte_carlo_serial.f90
    $ ldd ./a.out
     linux-vdso.so.1 (0x00007fff4dde4000)
     libgfortran.so.5 => /usr/lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007fa0ce2c7000)
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa0ce0dd000)
     libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fa0ce093000)
     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa0cdf44000)
     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa0cdf29000)
     /lib64/ld-linux-x86-64.so.2 (0x00007fa0ce5d3000)
    $ gfortran -static pi_monte_carlo_serial.f90
    $ ldd ./a.out
     n'est pas un exécutable dynamique
    $ gfortran -static-libgfortran pi_monte_carlo_serial.f90
    $ ldd ./a.out
     linux-vdso.so.1 (0x00007ffc591d5000)
     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f634bde0000)
     libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f634bd96000)
     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f634bc47000)
     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f634ba5d000)
     /lib64/ld-linux-x86-64.so.2 (0x00007f634be7b000)

    On voit que -static-libgfortran a bien pour effet de ne lier en static que la libgfortran. Les autres le sont en shared.

    On peut se faire une idée de ce qu'il y a dedans avec :

    $ strings -n 7 /usr/lib/x86_64-linux-gnu/libgfortran.so.5 | more

    Est-ce qu'il y a une commande plus élégante pour lister les fonctions contenues dans une librairie ?