linux下无法通过makefile中加入-g调试可执行文件

本文解决了一个在Makefile配置中的常见问题:如何正确设置编译标志以同时实现调试信息的保留和代码优化。通过调整CFLAGS,解决了-g选项与-O3选项之间的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在此感谢同学xu的帮助。
Makefile中内容如下:

##

CC = g++ -g

CFLAGS = -g -O3 -Wall -std=c++11 -I./include 



LFLAGS = -g -pthread 



##

SRC = $(wildcard src/*.cpp)

SEARCH = $(wildcard src/searchmain/*.cpp)

INDEX= $(wildcard src/indexmain/*.cpp)



OBJS = $(SRC:.cpp=.o)

OBJSEARCH = $(SEARCH:.cpp=.o)

OBJINDEX = $(INDEX:.cpp=.o)



TARGET1 = nass

TARGET2 = nass-index

TARGET3 = test



##

.suffixes:

	.cpp



%.o:%.cpp

	$(CC) -c $< $(CFLAGS) -o $@ 



all: $(TARGET1) $(TARGET2) 



$(TARGET1): $(OBJS) $(OBJSEARCH)

	$(CC) -o $@ $(OBJS) $(OBJSEARCH) $(LFLAGS) 



$(TARGET2): $(OBJS) $(OBJINDEX)

	$(CC) -o $@ $(OBJS) $(OBJINDEX) $(LFLAGS) 





clean:

	rm -f *~ */*~ $(OBJS) $(OBJSEARCH) $(OBJINDEX) $(TARGET1) $(TARGET2)

在这里插入图片描述

在终端的输入make结果如下:
在这里插入图片描述
在终端检查可执行文件是否可以调试:
在这里插入图片描述
最后一行表示不可以调试。现在不晓得如何解决,正在百度和必应,Stakflow中给出了类似问题的解决方案,但是没有用,请问谁有解决办法吗?

2021年4月24日 周六 下午3:17
在Makefile中,将以下代码修改为

CFLAGS =-g   -Wall -std=c++11 -I./include 

原因是:
-O -O2 -O3不能和-g选项联合使用
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值