2013-02-28 12 views
5

Bir C Makefile ile sorun yaşıyorum.C Makefile problemi: "gcc: -lm: linker giriş dosyası kullanılmadığından bağlanmadı. Mpicc -lm 3D-ELM.o -o 3D-ELM.exe"

İşte Makefile içeriği şunlardır:

PROJECT = 3D-ELM 
MPICC = mpicc 
CLAGS = -g -O3 
LIBS = -lm 
SRC = src_el 
OBJECTS = $(PROJECT).o 

$(PROJECT).exe : $(OBJECTS) 
     $(MPICC) $(CFLAGS) $(LIBS) $(OBJECTS) -o $(PROJECT).exe 

$(PROJECT).o : $(SRC)/$(PROJECT).c 
     $(MPICC) $(CFLAGS) $(LIBS) -c $(SRC)/$(PROJECT).c 

clean: 
     rm -rf *o $(PROJECT) 

Ben burada hatadır olun:

gcc: -lm: linker input file unused because linking not done

kimse neyin yanlış olduğunu biliyor mu? peşin

Çok teşekkürler,


DÜZENLEME: Anladım. Nesne dosyasını yaparken libs geçmem gerekmiyor ... Doh! Yalnızca derleyici çağırıyoruz Bu adımda

$(PROJECT).o : $(SRC)/$(PROJECT).c 
     $(MPICC) $(CFLAGS) $(LIBS) -c $(SRC)/$(PROJECT).c 

: çarpmalar masadan tüm yardım çocuklar için

Teşekkür,

cevap

7

sorun makefile'daki bu bölümünde gelmektedir kafa. -c anahtarı, derleyiciye yalnızca bir nesne dosyasına derleme yapmasını söyler ve bağlayıcı hiçbir şekilde yer almaz. Bağlanacak hiçbir şey olmadığından, $(LIBS) kısmı gereksizdir.

gerçek bağlama aşağıdaki aşamada gerçekleştirilir:

$(PROJECT).exe : $(OBJECTS) 
     $(MPICC) $(CFLAGS) $(LIBS) $(OBJECTS) -o $(PROJECT).exe 

ayrı nesne dosyaları bir çalıştırılabilir üretmek için kitaplıklarla birlikte birleştirilir yerdir. Derleyici kendisi bu noktada çağrılmamaktadır çünkü kaynak dosyalar zaten nesne dosyalarına dönüştürülmüştür.

İlgili konular