Makefile异常处理:C++: error: exception handling disabled, use -fexceptions to enable
原因分析
这是因为你的工程中使用了C++的异常处理机制(try-throw),而编译器不推荐这种操作,所以默认不开启,需要手动在Makefile
文件里添加。
解决方法
在Makefile
文件中添加-fexceptions
参数即可,添加在生成.o文件时
例子
# Makefile rules...
.c.o : $(OBJECTS.C)
$(CC) -I. $(CFLAGS) $(INCLUDES) $(MMAL_CFLAGS) -D__MMAL_ENCODER_DEBUG__ -c $< -o $@
.cc.o : $(OBJECTS.CC)
$(CXX) -I. $(CFLAGS) $(CCFLAGS) $(MMAL_CFLAGS) $(INCLUDES) -c $< -o $@ -fexceptions -fpermissive
# 增加 -fexceptions -fpermissive 参数,以使用MQTTCPP库的throw
$(TARGET): $(OBJECTS)
$(CXX) $(LDFLAGS) -o $(TARGET) -Wl,--start-group $(OBJECTS) $(BUILD_LIBS) -Wl,--end-group $(SYSLIBS) -lwiringPi -lbcm2835 -lpaho-mqttpp3 -lpaho-mqtt3a