Как отключить оптимизацию GCC при использовании make-файлов? - PullRequest
6 голосов
/ 13 февраля 2012

Я только начал изучать Linux, и у меня возникли проблемы с отключением оптимизации GCC для одного из моих проектов на C ++.

Проект построен с использованием make-файлов, таких как ...

make -j 10 && make install

Я читал на разных сайтах, что команда отключения оптимизации - это что-то вроде ...

gcc -O0 <your code files>

Может кто-нибудь помочь мне применить это к make-файлам вместо отдельного кода?Я искал несколько часов и пришел с пустыми руками.

Ответы [ 3 ]

7 голосов
/ 13 февраля 2012

В некоторых стандартных настройках make-файла вы можете

make -j10 -e CPPFLAGS=-O0

Но make-файл может использовать другие переменные подстановки или переопределить окружение.Вам нужно показать нам Makefile, чтобы предложить изменения

3 голосов
/ 13 февраля 2012

Простейший (полезный) make-файл, который позволяет режим отладки / выпуска:

#
# 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

Использование: отладочная сборка (использует -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
0 голосов
/ 13 февраля 2012

Например, оптимизированные компиляции могут быть записаны как:

all:
    g++ -O3 main.cpp

Компиляция с отладочной информацией (без оптимизации) может быть записана как:

all:
    g++ -g main.cpp
...