о CFLAGS в Makefile - PullRequest
       2

о CFLAGS в Makefile

4 голосов
/ 25 марта 2012

В make-файле есть строка:

    CFLAGS += $(shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1 
&& echo -fno-stack-protector)

Какая польза от shell $(CC) -fno-stack-protector -E -x c /dev/null >/dev/null 2>&1? Кажется, ничего не делать. И как работает вся линия? Заранее спасибо.

Ответы [ 3 ]

5 голосов
/ 25 марта 2012

Он проверяет, является ли -fno-stack-protector допустимой опцией командной строки для вашего компилятора C, и если это так, то добавляет эту опцию к CFLAGS, в противном случае ничего не делает.

4 голосов
/ 25 марта 2012

Если ваш компилятор не имеет опцию -fno-stack-protector, он вернет код ошибки (т.е. что-то !=0), в противном случае он вернет 0 (что означает "true" в кодах возврата),показывая, что все в порядке.

Теперь выражение foo && bar означает, что bar будет выполнено только в том случае, если foo вернет код без ошибки (т.е. 0).Итак, вы видите, что если ваш компилятор не имеет этот флаг, он вернет "false" (что-то !=0) и команда echo никогда не будет выполнена.Но если у него есть флаг, echo будет выполнен.

0 голосов
/ 25 марта 2012

Разве это не как-то проверяет, доступна ли опция -fno-stack-protector?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...