我刚刚开始学习Linux,但是在为我的一个C ++项目禁用GCC优化时遇到了一些麻烦。
该项目是使用makefile构建的......
make -j 10 && make install
我在各种网站上都看到禁用优化的命令是......
gcc -O0 <your code files>
有人可以帮助我将此应用于makefile而不是单个代码吗?我一直在寻找几个小时,空手而归。
答案 0 :(得分:7)
在某些标准的makefile设置中,您可以
make -j10 -e CPPFLAGS=-O0
但是makefile可能会使用其他替换变量或覆盖环境。您需要向我们展示Makefile才能提出修改
答案 1 :(得分:3)
允许调试/发布模式的最简单(有用)的makefile是:
#
# Define the source and object files for the executable
SRC = $(wildcard *.cpp)
OBJ = $(patsubst %.cpp,%.o, $(SRC))
#
# set up extra flags for explicitly setting mode
debug: CXXFLAGS += -g
release: CXXFLAGS += -O3
#
# Link all the objects into an executable.
all: $(OBJ)
$(CXX) -o example $(LDFLAGS) $(OBJ) $(LOADLIBES) $(LDLIBS)
#
# Though both modes just do a normal build.
debug: all
release: all
clean:
rm $(OBJ)
用法默认构建(未指定优化)
> make
g++ -c -o p1.o p1.cpp
g++ -c -o p2.o p2.cpp
g++ -o example p1.o p2.o
用法:发布版本(使用-O3)
> make clean release
rm p1.o p2.o
g++ -O3 -c -o p1.o p1.cpp
g++ -O3 -c -o p2.o p2.cpp
g++ -o example p1.o p2.o
用法:Debug build(使用-g)
> make clean debug
rm p1.o p2.o
g++ -g -c -o p1.o p1.cpp
g++ -g -c -o p2.o p2.cpp
g++ -o example p1.o p2.o
答案 2 :(得分:0)
例如,优化的编译可以写成:
all:
g++ -O3 main.cpp
带有调试信息(无优化)的编译可写为:
all:
g++ -g main.cpp