2013-06-12 80 views
1

我在Ubuntu上使用g ++編譯程序時遇到了一些困難,我懷疑ncurses庫沒有正確運行我很確定問題不在於makefile文件,但在這裏它是:使用g ++和ncurses進行編譯時使用「未定義的引用」

GCC=g++ 

all:: TABARI 
@ echo "All done in `pwd`" 

coder.o : coder.cp TABARI.h memory.o parser.cp process.cp codes.cp 
$(GCC) -c coder.cp 

memory.o: memory.cp TABARI.h parser.cp input.cp 
$(GCC) -c memory.cp 

input.o : input.cp TABARI.h parser.o coder.o 
$(GCC) -c input.cp 

utilities.o : utilities.cp TABARI.h 
$(GCC) -c utilities.cp 

codes.o : codes.cp TABARI.h memory.o parser.cp process.cp 
$(GCC) -c codes.cp 

output.o : output.cp TABARI.h memory.o input.o codes.o 
$(GCC) -c output.cp 

parser.o : parser.cp TABARI.h memory.o process.o 
$(GCC) -c parser.cp 

process.o : process.cp TABARI.h memory.o parser.cp coder.o input.cp modify.o interface.o xmlinput.o 
$(GCC) -c process.cp 

interface.o : interface.cp TABARI.h 
$(GCC) -c interface.cp 

modify.o : modify.cp TABARI.h memory.o codes.o 
    $(GCC) -c modify.cp 

xmlinput.o : xmlinput.cp TABARI.h 
    $(GCC) -c xmlinput.cp 

TABARI.o : TABARI.cp TABARI.h interface.o process.o 
    $(GCC) -c TABARI.cp 

TABARI: TABARI.o input.o memory.o utilities.o codes.o output.o coder.o parser.o\ 
process.o interface.o modify.o xmlinput.o 
    $(GCC) -lncurses -o TABARI.0.8.3b1 -g TABARI.o input.o memory.o utilities.o codes.o output.o coder.o parser.o\ 
process.o interface.o modify.o xmlinput.o 

clean: 
    rm -f *.o 
    echo "Done..." 

每當我運行make命令我得到的

undefined reference to `waddnstr' 
undefined reference to `stdscr' 
undefined reference to `waddch' 
undefined reference to `stdscr' 
undefined reference to `waddch' 
In function `ModifyClass::setupChange()': 
undefined reference to `stdscr' 
undefined reference to `whline' 
undefined reference to `move' 

回答

1
$(GCC) -lncurses -o TABARI.0.8.3b1 -g TABARI.o input.o memory.o ... 

一長串你的庫選項(-lncurses)應被放置全部.o文件,而不是之前。否則,鏈接可能(並且看起來在這種情況下)失敗。

$(GCC) -o TABARI.0.8.3b1 -g TABARI.o input.o memory.o ... xmlinput.o -lncurses 
+0

Hooray new binutils。 '' – 2013-06-12 18:14:51

相關問題