使用makefile时如何禁用GCC优化?

时间:2012-02-13 14:48:13

标签: c++ linux optimization gcc makefile

我刚刚开始学习Linux,但是在为我的一个C ++项目禁用GCC优化时遇到了一些麻烦。

该项目是使用makefile构建的......

make -j 10 && make install

我在各种网站上都看到禁用优化的命令是......

gcc -O0 <your code files>

有人可以帮助我将此应用于makefile而不是单个代码吗?我一直在寻找几个小时,空手而归。

3 个答案:

答案 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