-fPIC
- это значение по умолчанию в OS X. gcc 4.0.1 на моей старой машине OS X 10.4 определяет __PIC__
;или, если он явно отключен с помощью -fno-PIC
, он не выполняется.
Параметры флагов компиляции обычно не экспортируются в препроцессор, за исключением определенных особых случаев, которые могут различаться в зависимости от целей GCC..
Но вы можете увидеть влияние изменения флагов на предопределенные определения препроцессора на любой платформе, используя параметр -dM
для gcc
, который выводит определения препроцессора после завершения предварительной обработки.
например, из окна терминала:
$ gcc -xc++ -dM -E /dev/null | sort > /tmp/defaults.txt
$ gcc -fno-PIC -xc++ -dM -E /dev/null | sort > /tmp/nopic.txt
$ diff /tmp/defaults.txt /tmp/nopic.txt
65d64
< #define __PIC__ 1
$
(я указал -xc++
там, потому что я предварительно обрабатываю /dev/null
, а не файл с расширением, которое указывает на языковой вариантЭто также может быть -xc
, -xobjective-c
или -xobjective-c++
.)