Bonjour,
Voilà, j'ai un programme en C qui tourne correctement et que je compile avec gcc sous Solaris 10. Mais lorsque j'essaie de le compiler sous Linux (Mandriva 2006), toujours avec gcc , ça ne marche pas :
J'obtiens le même message avec Cygwin sous Win98.[-----@localhost model]$ make
gcc -o galaxy.out neutr.o Bfield.o coord_convert.o evol_rk4.o nrutil.o odeint.o rkqs.o rkck.o grid.o save.o -lm -lsocket -lnsl -lrpcsvc
/usr/bin/ld: cannot find -lsocket
collect2: ld returned 1 exit status
make: *** [heat.out] Erreur 1
Je crois savoir que Solaris est fourni avec la version 3.4.2 de gcc et Mandriva 2006 avec la 4.0.1. Est-ce que cela peut expliquer le message d'erreur ?
Sinon, j'ai essayé d'enlever lsocket du Makefile (je ne sais pas à quoi ça sert), mais j'ai droit à des "undefined reference" dans des parties du programme que je n'ai écrite. Je n'ai pas non plus écrit le Makefile (et je ne sais pas très bien comment ça marche) :
Y-a-t-il un problème dedans ? Est-il possible de le modifier pour que ça compile sous Linux ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 CC=gcc CFLAGS= -O6 -Wall #CFLAGS=-Dsun # -DNO_INTERACTION #LDFLAGS= -L/usr/local/lib -lm -lrecipes_c LDFLAGS= LIBS=-lm -lsocket -lnsl -lrpcsvc #### CFLAGS options ##### #-Dsun # If GCC complains about "implicit declarations" etc. # include option -Dsun to CFLAG's. #CFLAGS=-O -Wall -Dsun # I did not write it, because I think Sun's GCC should include it automatically. # #-DNO_INTERACTION # turns off interaction. Only for debugging purposes. # #-DIGNORE_ZERO_MODES # if this flag is absent, program will be aborted when INVERT,SVDCMP or LUDCMP # try divide by the very small number. # CC=/usr/local/gnu/bin/gcc #### P_OBJS=neutr.o Bfield.o coord_convert.o evol_rk4.o nrutil.o odeint.o rkqs.o rkck.o grid.o save.o heat.out: $(P_OBJS) $(CC) $(LDFLAGS) -o galaxy.out $(P_OBJS) $(LIBS)
Merci d'avance pour votre aide.
Partager