/usr/bin/ld : /tmp/ccwz9qWF . o: in function 'main':
a.cpp:(.text+0x73): underfined reference to 'num3(int,int)'
collect2: error: id returned 1 exit status
你用g++编译的时候只写了a.cpp,这是错误的,需要把b.cpp也写上,用下面的指令:
g++ a.cpp b.cpp
或者使用下面的makefile模板:
你新建个Makefile文件,把下面的内容贴进去,按照说明修改一下,保存退出,在终端执行make就可以了
#编译器LINUX
CXX=g++
#编译动态库
CXXDL= -g -lpthread $(LIB)
COMPILE=-c -g
#编译目标文件
CXXFLAGS=-g $(INCLUDE) -fPIC
#头文件搜索路径 把.h的路径写在这里
INCLUDE=-I./
#动态库 这里添加依赖的动态库 ,没有依赖的动态库的话,=后面的删掉即可
#LIB=-L/home/lib -lnettrans
LIB=
#目标文件,所有的.c文件 都写在这里
OBJ_FILES=a.o b.o
#生成的可执行文件
TARGET=./out
$(TARGET):$(OBJ_FILES)
@echo "Link the $@ starting..."
$(CXX) -o $(TARGET) $(OBJ_FILES) $(CXXDL)
@echo "Link the $@ done."
$OBJ_FILES:%.o:%.cpp
$(CXX) $< -o $@ $(COMPILE) -I$./
clean:
rm $(OBJ_FILES) $(TARGET)
你要把a.cpp和b.cpp都编译并链接生成到可执行文件
g++ a.cpp b.cpp
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!