使用g ++和ncurses进行编译时的“未定义引用”

时间:2013-06-12 18:06:11

标签: ubuntu g++ ncurses

我在使用Ubuntu上的g ++编译程序时遇到一些困难,我怀疑ncurses库运行不正常我很确定问题不在于makefile,而是在这里:

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 个答案:

答案 0 :(得分: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