2012-09-21 40 views
4

我無法弄清楚是什麼原因造成這個錯誤,我不斷收到在做我的項目:鏈接器輸入文件未使用的C++ G ++使文件

i686-apple-darwin11-llvm-g++-4.2: -lncurses: linker input file unused because linking not done 

我的make文件看起來是這樣的:

CC = g++ 

LIB_FLAGS = -l ncurses 

FLAGS = $(LIB_FLAGS) 

DEPENDENCIES = window.o element.o 

# FINAL OUTPUTS 
main: main.cpp $(DEPENDENCIES) 
    $(CC) $(FLAGS) -o main.out main.cpp $(DEPENDENCIES) 

# MODULES 
window.o: main.h classes/window.cpp 
    $(CC) $(FLAGS) -c classes/window.cpp 

element.o: main.h classes/element.cpp 
    $(CC) $(FLAGS) -c classes/element.cpp 

# CLEAN 
clean: 
    rm -rf *.o 
    rm main.out 

一切編譯好的,但我只是好奇,是什麼原因造成此錯誤消息,這意味着什麼..

+4

不要過時鏈接程序參數,如果你只是編譯('-o'),而不是鏈接。 (順便說一下,這些鏈接參數('-lfoo')通常應​​該在命令行末尾)。 – Mat

+0

通過鏈接器參數,你的意思是我不應該爲element.o和window包含$(FLAGS)。 Ø? – JonMorehouse

+1

@Mat我認爲你的意思是'-c'不是'-o'? –

回答

3

當您編譯(-c標記)源文件時,不要給出鏈接標誌。就拿這個例子中的makefile看看(如生成文件的文檔非常相似)

CPP = g++ 
CPPFLAGS =-Wall -g 
OBJECTS = main.o net.o 
PREFIX = /usr/local 

.SUFFIXES: .cpp .o 

.cpp.o: 
     $(CPP) $(CPPFLAGS) -c $< 

.o: 
     $(CPP) $(CPPFLAGS) $^ -o [email protected] 

main: $(OBJECTS) 
main.o: main.cpp 
net.o: net.cpp net.h 


.PHONY: 
install: main 
     mkdir -p $(PREFIX)/bin 
     rm -f $(PREFIX)/bin/main 
     cp main $(PREFIX)/bin/main 


clean: 
     rm -f *.o main 
4

您一起傳遞鏈接選項到編譯器調用與-c,這意味着不執行鏈接,因此-l選項未使用。在你的情況,你的LIB_FLAGS不應該在FLAGS,但在該main: ...規則,而規定:

main: main.cpp 
     $(CC) $(FLAGS) $(LIB_FLAGS) ... 
2

正如所提到的已經你傳遞連接器相關的標誌在編譯階段。通常你需要不同的標誌來編譯和鏈接,例如

CC = g++ 

CPPFLAGS = -Wall -g -c -o [email protected] 

LDFLAGS = -l ncurses -o [email protected] 

DEPENDENCIES = main.o window.o element.o 

# FINAL OUTPUTS 
main: $(DEPENDENCIES) 
    $(CC) $(LDFLAGS) $(DEPENDENCIES) 

# MODULES 
main.o: main.h main.cpp 
    $(CC) $(CPPFLAGS) main.cpp 

window.o: main.h classes/window.cpp 
    $(CC) $(CPPFLAGS) classes/window.cpp 

element.o: main.h classes/element.cpp 
    $(CC) $(CPPFLAGS) classes/element.cpp 

# CLEAN 
clean: 
    -rm main $(DEPENDENCIES) 
+0

按照(GNU)慣例,你應該真的把'LFLAGS'改成'LDFLAGS'。 – 2012-09-21 06:59:29

+0

@ H2CO3:公平點 - 我會改變它。 –

相關問題