Re: Question de c/cpp

トップ ページ

このメッセージに返信
著者: Patrick Dupre
日付:  
To: Patrick Dupre
CC: guilde
題目: Re: Question de c/cpp
OK, j'ai compris.
Il y avait un libludcmp.so
qui trainait dans .


===========================================================================
 Patrick DUPRÉ                                 | | email: pdupre@???
===========================================================================



> Sent: Thursday, May 30, 2024 at 12:32 PM
> From: "Patrick Dupre" <pdupre@???>
> To: "guilde" <guilde@???>
> Subject: Re: Question de c/cpp
>
> Oui,
>
> C'est ce que j'ai fait,
> mais il y a quelque chose qui m'echappe.
> j'ai cree libludcmp.so
>
> g++ -c ludcmp.cpp -o libludcmp.so -O3 -I ../include/ -fPIC
> g++ test.o -L . -lludcmp
>
> Et ca marche.
>
> mais is je fais ensuite
> g++ -shared -Wl,-soname,libludcmp.so.1.0 libludcmp.so
>
> cp libludcmp.so.1.0 ../lib/
> cd ../lib
> ln -s libludcmp.so.1.0 libludcmp.so -f
> cd ~
> g++ test.o -L ../lib -lludcmp
>
> Ca ne marche pas
> a.out: error while loading shared libraries: libludcmp.so.1: only ET_DYN and ET_EXEC can be loaded
>
> Alors que je fais cela assez regulierement pour mes bibliotheques dynamique
>
> ===========================================================================
>  Patrick DUPRÉ                                 | | email: pdupre@???
> ===========================================================================

>
>
> > Sent: Thursday, May 30, 2024 at 10:43 AM
> > From: "Edgar Bonet" <guilde@???>
> > To: guilde@???
> > Subject: Re: Question de c/cpp
> >
> > Bonjour la Guilde !
> >
> > Raphaël Dorado a écrit :
> > > La solution sale et rapide, c'est de rajouter "static" devant chaque
> > > fonction déclarée dans ludcmp.h.
> >
> > Une autre solution est de qualifier ces fonctions de « inline » plutôt
> > que « static ». Historiquement, « inline » demandait au compilateur de
> > recopier le corps de la fonction au point d'appel. Cependant, les
> > compilateurs modernes ont tendance à ignorer ça et à décider par eux
> > mêmes. Un effet secondaire de « inline » est que tu as le droit de
> > définir la fonction dans plusieurs unités de compilation, à condition
> > que ces définitions soient identiques. Si le compilateur décide de faire
> > une vraie fonction appelable, alors ces définitions seront combinées par
> > l'éditeur de liens en use seule :
> >
> >   – static : une implémentation par unité de compilation
> >   – inline : une implémentation unique partagée par toutes les unités de
> >     compilation.

> >
> > Après, si les fonction sont non triviales, la bonne solution consiste à
> > mettre leur implémentation dans un fichier .cpp, et laisser les seules
> > déclarations dans le .h.
> >
> > À+,
> >
> > Edgar.
> >
> >
>
>