|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
[C]Problemi durante la fase di linking
Ciao a tutti, ho un bel problema di linking con il progetto che sto sviluppando in questo periodo, o meglio, il problema di linking lo ho solo su Mac OS X e non su Linux.
Codice:
CC = gcc ifeq ($(DIST),debug) BUILDDIR = ../build/debug CFLAGS = -g -std=c99 -pedantic -Wall -O3 else BUILDDIR = ../build/release CFLAGS = -std=c99 -pedantic -Wall -O3 endif ifeq ($(TARGET),mac) LDFLAGS = -lGL -lGLU -lfreeglut -Xlinker -multiply_defined -Xlinker suppress IDIR = -I/usr/X11/include -I/opt/freeglut/include/GL LDIR = -L/opt/freeglut/lib -L/System/Library/Frameworks/OpenGL.framework/Libraries/ else LDFLAGS = -lglut -lm -lGLU -lGL -Xlinker -zmuldefs IDIR = -I/mnt_nfs/home4/instruct/i488/freeglut/include/GL/ LDIR = -L/mnt_nfs/home4/instruct/i488/freeglut/src/.libs -L/usr/lib endif OBJDIR = $(BUILDDIR)/obj OBJFILES = $(OBJDIR)/main.o $(OBJDIR)/handlers.o $(OBJDIR)/draw.o $(OBJDIR)/types.o $(OBJDIR)/list.o EXECUTABLE = $(BUILDDIR)/kaleidoscope RM = rm MKDIR = mkdir all: $(EXECUTABLE) $(EXECUTABLE): $(OBJFILES) $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(LDFLAGS) $(IDIR) $(LDIR) $(OBJFILES) -o $(EXECUTABLE) $(OBJDIR)/main.o: main.c handlers.h globals.h $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(CFLAGS) -c main.c $(IDIR) $(LDIR) -o $(OBJDIR)/main.o $(OBJDIR)/handlers.o: handlers.c handlers.h draw.h globals.h $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(CFLAGS) -c handlers.c $(IDIR) $(LDIR) -o $(OBJDIR)/handlers.o $(OBJDIR)/draw.o: draw.c draw.h types.h globals.h $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(CFLAGS) -c draw.c $(IDIR) $(LDIR) -o $(OBJDIR)/draw.o $(OBJDIR)/types.o: types.c types.h list.h globals.h $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(CFLAGS) -c types.c -o $(OBJDIR)/types.o $(OBJDIR)/list.o: list.c list.h globals.h $(MKDIR) -p $(BUILDDIR) $(MKDIR) -p $(OBJDIR) $(CC) $(CFLAGS) -c list.c -o $(OBJDIR)/list.o clean: $(RM) -f $(BUILDDIR)/$(EXECUTABLE) $(RM) -rf $(OBJDIR) $(RM) -rf $(BUILDDIR) Per risolvere il problema su Linux ho semplicemente aggiunto la flag -Xlinker -zmuldefs nelle opzioni di linking; per Mac OS X ho seguito la stessa via aggiungengo la flag -Xlinker -multiply_defined -Xlinker suppress ma sembra che il linker la ignori. Google non mi è stato d'aiuto purtroppo, qualcuno ha già avuto questo problema? NB: non si tratta di un problema grosso perché la macchina target è Linux, tuttavia, non avendo sotto mano una macchina Linux su cui possa utilizzare OpenGL connettermi in ssh alla macchina dell'università tutte le volte che devo fare una prova è piuttosto seccante. Visto che ho perso non poco tempo anche per capire come compilare FreeGLUT su Mac OS X ora mi piacerebbe proprio poter utilizzare la mia macchina per le prove. Ultima modifica di sirus : 13-09-2009 alle 00:02. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:18.



















