我在使用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'
答案 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