【发布时间】:2023-07-10 07:32:01
【问题描述】:
我正在尝试在 Ubuntu 11.10 中编译我的代码并遇到这些错误等等。到目前为止,通过谷歌搜索我认为这是一个链接错误。具体来说,有人建议确保您拥有正确的标题并链接 -lncurses 库。我已经这样做了。我仍然收到此错误。我还读到可能我应该安装 libncurses,但我已经安装了它。
My MakeFile:
CPP = g++
CPPFLAGS = -c -Wall -g
LINK = g++
LDFLAGS_LINUX = -lpthread -lncurses
LDFLAGS = $(LDFLAGS_LINUX)
RM = rm
.SUFFIXES:
.SUFFIXES: .o .cpp
.cpp.o:
$(CPP) $(CPPFLAGS) $*.cpp -o $(SRC_DIR)$*.o
all: skygrid
skygrid: skygrid.o commServer.o pose.o robot.o
$(LINK) $(LDFLAGS) -o $@ $^
clean:
$(RM) -rf *.o skygrid
skygrid.o: skygrid.cpp definitions.h commServer.h pose.h robot.h
commServer.o: commServer.cpp commServer.h
pose.o: pose.cpp pose.h
robot.o: robot.cpp robot.h pose.h
我的错误:
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1094: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1104: undefined reference to `werase'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1106: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1107: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1109: undefined reference to `wprintw'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1111: undefined reference to `stdscr'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1111: undefined reference to `wgetch'
/home/fari/Desktop/FarahSkygrid/skygrid/src/skygrid.cpp:1116: undefined reference to `wtouchln'
【问题讨论】:
-
约定是使用 CPP 作为预处理器,CPPFLAGS 作为预处理器的标志,CXX 用于 C++ 编译器,CXXFLAGS 作为 CXX 的标志。将 CPP 分配为 C++ 编译器会破坏 make 的隐式规则。
-
感谢所有试图提供帮助的人。我实际上不再使用此代码,也无权访问它。所以,除了 Keith Thompson 的建议之外,我没有尝试任何其他方法,而这对我没有用。对于可能遇到相同问题的其他人,请尝试其他答案并标记它们是否有用。
-
我遇到了同样的问题,解决方法是在最后使用 -l:
gcc -o hello hello.c -lncurses
标签: c++ compilation linker ncurses