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
Last modification:January 8th, 2023 at 12:40 am