问题遇到的现象和发生背景
Linux系统下编译cpp程序
问题相关代码,请勿粘贴截图
无
运行结果及报错内容
我的解答思路和尝试过的方法
我写了一个类,封装在一个头文件里,然后yzz.cpp引用这个头文件,在yzz.cpp中调用这个类。这样编译yzz.cpp就会产生如上报错。
如果我把这个类直接写在yzz.cpp里面,直接进行调用,程序就可以正常编译
尝试
我本来以为是Makefile存在问题,但是我直接在yzz.cpp中引用一个空的头文件,yzz.cpp也可以正常编译。
Linux系统下编译cpp程序
无
我写了一个类,封装在一个头文件里,然后yzz.cpp引用这个头文件,在yzz.cpp中调用这个类。这样编译yzz.cpp就会产生如上报错。
如果我把这个类直接写在yzz.cpp里面,直接进行调用,程序就可以正常编译
我本来以为是Makefile存在问题,但是我直接在yzz.cpp中引用一个空的头文件,yzz.cpp也可以正常编译。
Makefile是否把.h所在的路径包含进去了?
参考如下的makefile
#编译器LINUX
CXX=g++
#编译动态库
CXXDL= -g -lpthread $(LIB)
COMPILE=-c -g
#编译目标文件
CXXFLAGS=-g $(INCLUDE) -fPIC
#头文件搜索路径
INCLUDE=-I./ -I/data/haha/include
#依赖的动态库,如果没有,直接用LIB=
LIB=-L/data/haha/lib -lTestNetTool
#目标文件
OBJ_FILES=recv.o
#可执行文件或者动态库
TARGET=./recv
$(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)