Как определить флаги компиляции во время компиляции на OS / X? - PullRequest
1 голос
/ 01 апреля 2011

Если я скомпилирую с -fPIC на Linux x86 с gcc 4.1, тогда определение __PIC__ будет установлено в 1, и препроцессор может действовать в соответствии с этим во время компиляции.Однако в OS / X под gcc 4.01 это не так.Есть ли другой способ определить параметр -fPIC во время компиляции в OS / X?

Общая возможность запроса флагов компиляции на уровне препроцессора в OS / X была бы еще более полезной, но я не былне могу найти ничего подобного.

1 Ответ

1 голос
/ 01 апреля 2011

-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++.)

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