2011-11-28 16 views
10

gcc/g ++ kullanarak herhangi bir optimizasyon yapmadan bir C programını nasıl derleyebilirim?Herhangi bir optimizasyon olmadan C programını nasıl derleriz

+0

Derhal bir derleyici anahtar aramıyorsanız şansınızı ilan etmek isteyebilirsiniz. değişken (ler). – user786653

+0

Neden onları kapatılmasını istiyorsunuz? Optimizasyonlar 1) etkin, ve 2) size sorunlara neden olduğuna inanmak için bir nedeniniz var mı? Bir optimizasyonun doğru yazılmış kodla sorunlara neden olması nadirdir. Bununla birlikte, hata ayıklama için -gg0 ile birlikte -O0 kullanımı genellikle yararlıdır. –

cevap

13
gcc main.c 

veya herhangi bir iyileştirme yapmaz varsayılan olarak

g++ main.cpp 

. Sadece -O1, -O2, -O3, etc...'u belirttiğinizde optimizasyon yapar.

Veya bunu yapmak için -O0 anahtarını kullanabilirsiniz.

5

-O bayrağıyla sormadığınız sürece herhangi bir en iyileştirme yapamazsınız. Yapı sisteminiz tarafından sağlanan bazı varsayılanları geri almanız gerekiyorsa, -O0 bunu sizin için yapar, komut satırında son -O bayrağı olduğu sürece. gcc kullanarak

1

, bayrak geçmesi: -O 0

11

En yakını, -O0 kullanımı, diğer yanıtlardan farklı olarak, sıfır en iyi duruma getirme anlamına gelmez.

$ gcc -Q -O0 --help=optimizers | grep enabled | wc -l 
52 
$ gcc -Q -O1 --help=optimizers | grep enabled | wc -l 
80 
$ gcc -Q -O2 --help=optimizers | grep enabled | wc -l 
110 
$ gcc -Q -O3 --help=optimizers | grep enabled | wc -l 
119 

Yani O0 de, etkin 52 optimizasyonlar vardır: Böyle farklı gcc optimizasyon seviyeleri için etkin optimizasyonlar sayısını (bu gcc 4.8.2 olduğunu) sayabiliriz. Sanırım biri onları tek tek kapatabilirdi, ama bunu hiç görmedim. Sıfır optimizasyonlar umut verici değil

-O0 Reduce compilation time and make debugging produce the expected results. This is the default. 

: gcc adam sayfanın mesajı

Not.

Ben bir gcc geliştiricisi değilim, ama -00 optimizasyonlarının artık standartlar olmaktan ziyade optimizasyon olarak adlandırılabilecek kadar standart olduklarını söyleyebilirler. Eğer bu doğruysa, biraz kafa karıştırıcıdır, çünkü gcc hala optimizer listesine sahiptir. Ayrıca tarihi yeterince iyi bilmiyorum: belki de önceki bir sürüm için -00 gerçekten sıfır optimizasyonları anlamına geldi ...

İlgili konular