在Linux下编译c++报错

/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

img

img

img

你用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
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632