2015-01-23 5 views
1

Под GNUStep on Arch Linux у меня возникает интересная ошибка при новой установке.Отменить предыдущий -D [efine] флаг для GCC

Используя мою систему сборки я бегу

gcc `gnustep-config --debug-flags` [other command line args] 

для того, чтобы создать командную строку за необходимые флаги операционной системы.

Это прекрасно работает под Ubuntu, но на Arch Linux я получаю довольно случайную ошибку:

/usr/include/features.h:328:4: error: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Werror=cpp]

Ну, gnustep-config --debug-flags выплевывает следующее:

-MMD -MP -D_FORTIFY_SOURCE=2 -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRARY=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fno-strict-aliasing -pthread -fPIC -g -DDEBUG -fno-omit-frame-pointer -Wall -DGSWARN -DGSDIAGNOSE -Wno-import -march=x86-64 -mtune=generic -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -fgnu-runtime -fconstant-string-class=NSConstantString -fexec-charset=UTF-8 -I. -I/home/qix/GNUstep/Library/Headers -I/usr/include -D_FORTIFY_SOURCE=2 -I/usr/include -I/usr/include -I/usr/include -I/usr/lib/libffi-3.1/include/ -I/usr/lib/libffi-3.1/include -I/usr/include/libxml2 -I/usr/include/p11-kit-1

Как хорошо, я хочу не иметь оптимизаций для моих отладочных сборников (а позже я даже переопределяю параметр GNAStep -g на -g2).

Есть ли способ явно Undefine-D_FORTIFY_SOURCE позже в командной строке, после вызова gnustep-config?

Например, что-то вроде

gcc `gnustep-config --debug-flags` -U_FORTIFY_SOURCE ... 

где -U undefines ранее определенный макрос?

Что-то сказать; У меня есть -Werror включен специально, и я хотел бы сохранить его.

ответ

2

На данный момент использование sed для работы вокруг этого работает. Похоже, что это known issue с _FORTIFY_SOURCE, что вызывает проблемы, и нет прямого исправления.

`gnustep-config --debug-flags | sed 's/-D_FORTIFY_SOURCE=2//g'`