[Précédent (date)] [Suivant (date)] [Précédent (sujet)] [Suivant (sujet)] [Index par date] [Index par sujet]
Re: segmentation fault
- To:
- Subject: Re: segmentation fault
- From: "Gilles J. Seguin" <>
- Date: Sun Jul 21 08:08:01 2002
- Newsgroups: qc.comp.os.linux.aide
Lefevre wrote:
>
> Bonjour,
>
> Nouveau venu dans la communauté Linux, je rencontre quelques difficultés
> à compiler un logiciel de maillage pour permettre la résolution d'équations
> mathématiques selon la méthode des éléments finis. Le logiciel fait
> appel à de nombreuses bibliothèques, dont X11 et Motif.
> La compilation échoue sur un message d'erreur de type Segmentation
> fault. Voici les messages obtenus lors de l'installation des codes
> sources et une recherche sous gdb des causes du problème.
>
> make -k
> gcc -g -O0 -D_POSIX_SOURCE -I/usr/X11R6/include -c -o main.o main.c
ajoute l'option -Wall
> sh newvers.sh
> gcc -g -O0 -D_POSIX_SOURCE -c vers.c
> gcc -g -O0 -D_POSIX_SOURCE -I/usr/X11R6/include -c -o xmgredit.o xmgredit.c
[...]
> gcc -g -O0 -D_POSIX_SOURCE -I/usr/X11R6/include -c -o xvlib.o xvlib.c
> yacc pars.y
> mv -f y.tab.c pars.c
bison -o pars.c pars.y
> gcc -g -O0 -D_POSIX_SOURCE -I/usr/X11R6/include -c -o pars.o pars.c
> gcc -g -O0 -D_POSIX_SOURCE main.o vers.o xmgredit.o gridwin.o fileswin.o
> statuswin.o propwin.o pomwin.o editwin.o modwin.o qualwin.o timerwin.o
> slicewin.o graphwin.o isolwin.o buildwin.o printwin.o locatewin.o wvwin.o
> imagewin.o monwin.o helpwin.o scalewin.o cedit.o events.o strwin.o
> objutils.o find.o allogrid.o allobound.o allobuild.o gridio.o gridutils.o
> buildio.o buildutils.o boundio.o boundutils.o drawobjs.o drawgrid.o
> drawbound.o isol.o isolutils.o stubs.o utils.o io.o params.o malerts.o
> motifutils.o vedglist.o vgeometry.o vheap.o vmemory.o voronoi.o voutput.o
> vtriang.o chersh.o draw.o image_f_io.o ps.o xvlib.o pars.o -o
> xmgredit5 -L/usr/X11R6/lib -static -lXm -shared -lXt -lXext -lXpm -lX11 -lm
L'utilisation de -static et -shared est surement fautive.
Ajoute l'option -v pour avoir les commendes reel qui sont donnees
au lieur de liens(ld).
Rappel, l'option -shared est utilise pour creer des librairies
de type partager, ex. tata.so.1, donc cette option n'a pas a
etre ici
L'option -static est utilise pour lier avec la version statique
de la librairie. Ici vous semblez desirer la libraries libXm.a
Mais elle doit s'ecrire -Wl,-static. En ajoutant l'option -v
a cette ligne de commande, vous allea voir la commande qui est
passer a l'utilite ld(linker).
Meme commentaire, pour lier les versions dynamiques et partagees
de Xt, Xext, Xpm, X11 vous avez besoin de l'option -dynamic
mais comme c'est une option de ld vous devez ecrire -Wl,-dynamic.
Donc par default vous utilisez les versions dynamiquement liees
mais toutes les libraries qui vont suivre une option
-Wl,-static devront etre static. Nous revenons a des libraries
dynamiques avec l'option -Wl,-dynamic et ainsi de suite.
Autre commentaire, la librarie libm.so est resolue sans etre inclus
sur la ligne de commande, de meme la libraire libXpm.so devrait
faire partie inclusive de libXm.so, mais peut etre compiler
separement. OU bien avoir le prefix Xme pour Motif extension,
voir la documentation.
$ nm /usr/X11R6/lib/libXm.so | grep Xpm
> rm pars.c ???
ldd ./xmgredit5
pour avoir la liste des libraries liees
> ./xmgredit5
> Erreur de segmentation (core dumped)
> gdb xmgredit5 core
> Program terminated with signal 11, segmentation fault
signal 11 est generalement de la memoire fautive ou vous avez
besoin de reassoire les plaquettes de memoire dans leurs supports.
J'aurais aime savoir si le signal 11 apparait avec
gdb xmgredit5
> #0 0x00000001 in ?? ()
> (gdb) where
> #0 0x00000001 in ?? ()
> Cannot access memory at address 0x0
>
> La compilation semble s'effectuer convenablement
> (pas de message warning ou error) et l'appel des différentes
> bibliothèques est effectué correctement.
> Cependant, l'exécution se plante lamentablement.
> Je fais appel aux adeptes de la compilation sous Linux.
> Quelqu'un peut il me donner une direction,
> une explication des causes de plantage et des conseils
> pour compiler avec succès cette application ?
>
> Merci pour vos suggestions.
> .J. LEFEVRE