Вопрос по gcc, g++ – Добавьте некоторые флаги по умолчанию в gcc (желательно используя файл спецификации)

5

Я хочу, чтобы мойgcc всегда добавлять некоторые флаги по умолчанию, есть ли чистый способ сделать это?

В основном у меня есть некоторые флаги, которые я передаю каждый раз, когда я вызываюgccНапример, (но не ограничиваясь)-g (чтобы он имел отладочную информацию).

Есть несколько обходных путей, но они безобразны:

alias g++=..., but I don't like this approach; Write a script that wraps around the g++, similar to 1; ...

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

Ваш Ответ

2   ответа
7

Бежатьstrace gcc | grep specs чтобы увидеть, где он ищет файл спецификации, затем перейдите туда и запуститеgcc -dumpspecs > specs, Теперь у вас есть файл спецификации, готовый для редактирования. Используйте эту ссылку:https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

@Gravis Как это делает это неправильно?
Этот spec-файл довольно сложен на первый взгляд. С большим количеством знаков% и {} вы можете показать нам пример того, как добавить параметры по умолчанию для компоновщика, компилятора C или компилятора C ++?
Можете ли вы показать нам пример? Например. Как добавить опцию компоновщика по умолчанию, которая всегда там? Или опция компилятора C ++, или опция компилятора C?
Вам нужно добавить 2 & gt; & amp; 1 непосредственно перед "|", поскольку strace выводит в stderr. Я проверил эту идею на своей виртуальной машине, добавив измененный файл спецификаций в расположение, предложенное в результате вывода strace, а затем запустив g ++ -v на фиктивном cpp, наблюдая за ожидаемыми вариантами.
@Gravis GCC читает файл спецификации (если он существует) и использует значения в нем, чтобы переопределить файл спецификации по умолчанию (встроенный). Сбрасывая весь файл спецификации по умолчанию и редактируя его, вы фактически переопределяете весь встроенный файл спецификации.
1

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

Кроме того, как часто вы запускаете компилятор из командной строки? Я знаю, что почти единственный раз, когда я делаю это напрямую, это когда мне нужно временно взломать командную строку, и я не могу решить, как исправить параметры компилятора в make-файле, поэтому я копирую строку компиляции из вывод make и затем запустите компилятор. Одна проблема сalias является то, что он не будет работать внутриmakefile, Так что для меня проблема сводится к тому, чтобы опции компилятора использовались в каждом make-файле.

Есть законные варианты использования для этого помимо вызова из командной строки. Возможно, вы захотите указать драйверу GCC, где найти альтернативный libc, например ... или альтернативные заголовки. Или добавьте & quot; default & quot; заголовки.

Похожие вопросы