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 :

[-----@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
J'obtiens le même message avec Cygwin sous Win98.

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) :
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)
Y-a-t-il un problème dedans ? Est-il possible de le modifier pour que ça compile sous Linux ?

Merci d'avance pour votre aide.