Это зависит от самой программы; операционная система не диктует, имеет ли порядок значение.
Набор GCC опций так колоссален, что я не могу сказать ни с какими полномочиями, если можно предоставить какую-либо опцию в произвольном порядке; необходимо будет прочитать документацию для той опции. Тем не менее общее эмпирическое правило - это, если у Вас есть две или больше взаимоисключающих опции (такой как -O1 -O2
для отличающихся уровней оптимизации), программы будут обычно выбирать более поздние варианты по более ранним. Снова, это не осуществляется Linux.
Простая программа, которая действительно позволяет Вам указать большинство опций в любом порядке, была бы ls
. Список всех файлов в текущем каталоге с деталью может быть сделан с также ls -la
, ls -al
или ls -l -a
. Однако ls-l1 (который является 'el' 'один') не дает тот же вывод как ls-1l ('один' 'l'). Это взаимоисключающие опции и последнее, перечисленное по поездкам данное первое.
Существует также нечетная программа, которая применяет опции к аргументам, когда они прибывают. Так, например, у Вас могла бы быть гипотетическая команда blah -a 1 2 -b 3
где -a
относится ко всем трем аргументам, но -b
только относится 3
.
Снова, это до отдельной рассматриваемой программы. Если Вы когда-либо не уверены, прочитайте документацию.
Существуют случаи, где порядок параметров командной строки имеет значение даже в GCC. Если Вы связываетесь со статическими библиотеками (.a), то, если Вы указываете -llib1 -llib2
и существует функция в liblib2.a
это вызывает функцию в liblib1.a
это не было принесено в программу, затем ссылка перестанет работать с неразрешенным символом. С общими библиотеками это не проблема.
В целом, как другие сказали, порядок опций может или не может иметь значения. Однако вывод от двух команд ниже отличается - так порядок аргументов cat
изменяет вывод:
cat /etc/passwd /etc/group
cat /etc/group /etc/passwd
Обратите внимание также на это на Linux (в особенности), GNU getopt()
склонно переупорядочить командную строку так, чтобы все опции (запускающийся с минус) были обработаны перед любым из других аргументов - если Вы не используете двойного тире --
отметить конец аргументов, или если Вы не устанавливаете переменную среды POSIXLY_CORRECT.
Трудно уже для знания как другой сказанный Вы это может иметь значение (или не).
Хорошее эмпирическое правило состоит в том, чтобы открыть страницу справочника и посмотреть на первый пример и использование, которые заказывают при помещении аргумента там.
Таким образом, если мы смотрим на команду кошки (кошка человека):
SYNOPSIS
cat [OPTION] [FILE]...
Это походит, пока все опции перед файлом args необходимо быть в порядке.
И если мы смотрим на gcc зверя (человек gcc):
SYNOPSIS
gcc [-c|-S|-E] [-std=standard]
[-g] [-pg] [-Olevel]
[-Wwarn...] [-pedantic]
[-Idir...] [-Ldir...]
[-Dmacro[=defn]...] [-Umacro]
[-foption...] [-mmachine-option...]
[-o outfile] [@file] infile...
Only the most useful options are listed here; see below for the remainder. g++ accepts mostly
the same options as gcc.
Не то, чтобы простой понять как команда :) кошки
Но если требуется избежать рискованных действий,-c, кажется, прибывает, прежде-O и затем infile (hello.c), кажется, является последним.
gcc -c -O hello.c
Но поскольку Вы уже знаете, так как другие работают..., это играет его очень безопасный :)
Только если у Вас есть 2 опции, которые являются взаимоисключающими. Иначе порядок не имеет значения.
Конечно, это может варьироваться в зависимости от того, как программа была записана, но должна относиться, все нормальные *отклоняют инструменты.