Yanıtlar:
Bu, programın kendisine bağlıdır; işletim sistemi, siparişin önemli olup olmadığını belirlemez.
GCC'nin seçenekler kümesi o kadar muazzam ki, herhangi bir seçeneği keyfi sırada sağlayabiliyorsanız herhangi bir otorite ile söyleyemem ; bu seçeneğin belgelerini okumalısınız. Bununla birlikte, genel bir kural, iki veya daha fazla birbirini dışlayan seçeneğiniz varsa ( -O1 -O2
farklı optimizasyon seviyeleri için), programların genellikle önceki seçeneklere göre daha sonraki seçenekleri alacağıdır. Yine, bu linux tarafından uygulanmıyor.
Çoğu seçeneği herhangi bir sırayla belirtmenize izin veren basit bir program olacaktır ls
. Ayrıntılarla geçerli dizindeki tüm dosyaları listeleme biriyle yapılabilir ls -la
, ls -al
ya da ls -l -a
. Ancak, ls -l1 (yani 'el' 'one') ls -1l ('one' 'l') ile aynı çıktıyı vermez. Bunlar birbirini dışlayan seçeneklerdir ve son listelenen ilk verilen sürmek.
Ayrıca, argümanlara ulaştıkça seçenekleri uygulayan tek bir program da vardır. Yani, örneğin, bir varsayımsal komutu olabilir her üç argüman için geçerlidir, ancak yalnızca için geçerlidir .blah -a 1 2 -b 3
-a
-b
3
Yine, bu söz konusu bireysel programa bağlıdır. Emin değilseniz, belgeleri okuyun.
GCC'de bile komut satırı seçeneklerinin sırasının önemli olduğu durumlar vardır. Statik kitaplıklarla (.a) bağlantı kuruyorsanız, o zaman belirtirseniz -llib1 -llib2
ve programa getirilmemiş liblib2.a
bir işlevi çağıran bir işlev liblib1.a
varsa, bağlantı çözülmemiş bir sembolle başarısız olur. Paylaşılan kitaplıklarda bu bir sorun oluşturmaz.
Genel olarak, diğerlerinin söylediği gibi, seçeneklerin sırası bir fark yaratabilir veya etmeyebilir. Ancak, aşağıdaki iki komuttan alınan çıktı farklıdır cat
;
cat /etc/passwd /etc/group
cat /etc/group /etc/passwd
(Özellikle) Linux üzerinde, GNU da unutmayın getopt()
çift çizgi kullanın sürece - diğer değişkenlerden herhangi biri önce bu nedenle tüm seçenekler (eksi ile başlayan) işlenmesini komut satırını yeniden düzenlemek için apt --
sonunu işaretlemek için veya ortam değişkenini POSIXLY_CORRECT olarak ayarlamadığınız sürece.
Yalnızca birbirini dışlayan 2 seçeneğiniz varsa. Aksi takdirde, düzen önemli değildir.
Tabii ki, bu programın nasıl yazıldığına bağlı olarak değişebilir, ancak tüm normal * nix araçlarına uygulanmalıdır.
Bilmek zor, diğerlerinin size söylediği gibi bir fark yaratabilir (ya da olmayabilir).
İyi bir kural, man sayfasını açmak ve ilk örneğe bakmak ve arg'u oraya koyarken bu sırayı kullanmaktır.
Eğer kedi komutuna bakarsak (adam kedi):
SYNOPSIS
cat [OPTION] [FILE]...
Tüm seçenekler dosya argümanlarından önce olduğu sürece iyi olmalıydı.
Ve eğer gcc canavarına bakarsak (adam 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.
Kedi komutu olarak anlamak o kadar da kolay değil :)
Ama eğer güvenli oynamak istiyorsanız, -c daha önce gelmiş gibi görünüyor -O sonra da infile (merhaba.c) son gibi görünüyor.
gcc -c -O hello.c
Ama bildiğiniz gibi, diğerleri çalıştığı için ... bu çok güvenli oynuyor :)
-static-libstdc++
?
ls -al path/to/dir
geçerli, ancak geçerlils path/to/dir -al
değil. Bu nedenlels
, seçeneklerinizi, içeriğini listelemek istediğiniz (isteğe bağlı) dizinin önüne koymanız gerekir.