Jak mogę skompilować program C bez żadnych optymalizacji za pomocą gcc/g ++?Jak skompilować program C bez żadnej optymalizacji?
Odpowiedz
gcc main.c
lub
g++ main.cpp
domyślnie nie robi żadnych optymalizacje. Tylko wtedy, gdy podasz -O1, -O2, -O3, etc...
, zrobisz optymalizacje.
Możesz też użyć przełącznika -O0
, aby było to wyraźne.
Nie powinieneś otrzymywać żadnych optymalizacji, chyba że poprosisz o nie flagą -O
. Jeśli chcesz cofnąć niektóre ustawienia domyślne dostarczone przez Twój system kompilacji, -O0
zrobi to za Ciebie, o ile jest to ostatnia flaga -O
w wierszu poleceń.
Korzystanie z gcc, przechodzą w flagi: -O 0.
pomocą przełącznika kompilatora -O0.
Używanie -O0 jest najbliższe mi znane, jednak w przeciwieństwie do innych odpowiedzi, nie oznacza to zero optymalizacji. Można policzyć liczbę włączonych optymalizacje dla różnych poziomów optymalizacji gcc tak (to gcc 4.8.2):
$ 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
Więc w -O0, istnieje 52 optymalizacje włączona. Przypuszczam, że można je wyłączyć jeden po drugim, ale nigdy tego nie widziałem.
Zauważ, że strona gcc człowiek mówi:
-O0 Reduce compilation time and make debugging produce the expected results. This is the default.
To nie obiecując zerowe optymalizacje.
Nie jestem deweloperem gcc, ale przypuszczam, że powiedzieliby, że optymalizacje -O0 stały się tak standardowe, że już prawie nie można ich nazwać optymalizacjami, a raczej "standardami". Jeśli to prawda, to jest trochę mylące, ponieważ gcc nadal ma je na liście optymalizatorów. Nie znam też wystarczająco dobrze historii: być może dla wcześniejszej wersji -O0 naprawdę oznaczało zero optymalizacji ...
- 1. Jak skompilować plik C bez wizualnego studio
- 2. Jak skompilować i uruchomić program C/C++ w systemie Android
- 3. Jak mogę skompilować program Go?
- 4. C++: funkcja optymalizacji bez skutków ubocznych
- 5. Jak skompilować GCC bez _alloca?
- 6. Jak mogę skompilować i uruchomić ten program, napisany 1989 C?
- 7. Jak mogę skompilować i uruchomić program C# bez użycia Visual Studio?
- 8. Dwuwymiarowa interpolacja w R, bez żadnej ekstrapolacji
- 9. Jak skompilować program za pomocą OpenCV 2.4.3 z Code :: Blocks?
- 10. Jak skompilować C++ z Clang?
- 11. Program Quine bez main()
- 12. Jak mogę skompilować rozwiązanie C# z Roslyn?
- 13. Jak (cross-) skompilować boost BEZ Pythona?
- 14. Wyjątki losowe losowania Selenium bez żadnej wiadomości
- 15. Jak mogę skompilować program Rust, aby nie używać __cxa_thread_atexit_impl?
- 16. -fno-omit-frame-wskaźnik bez optymalizacji
- 17. Jak skompilować kod C do Swift Framework
- 18. Jak skompilować ten program za pomocą wbudowanego modułu ASM?
- 19. Java dla optymalizacji pętli
- 20. Jak skompilować i uruchomić prosty program C z Sublime Text 2?
- 21. Jak skompilować program C++ jako 64-bitowy na komputerze 64-bitowym?
- 22. Jak skompilować projekt C w trybie C99?
- 23. Jak skompilować plik C++ do WebAssembly?
- 24. Jak skompilować C++ pod Ubuntu Linux?
- 25. Jak napisać i skompilować kod Objective-C?
- 26. Jak skompilować skrypt julia?
- 27. C++ optymalizacji zwracana wartość, wielokrotne powroty nienazwane
- 28. Jak ten program się powiela?
- 29. optymalizacji kompilatora Java String
- 30. Zatrzymaj program R bez błędu
Przy braku szansy, że nie szukasz przełącznika kompilatora, możesz chcieć zadeklarować zmienna (-e) 'volatile'. – user786653
Dlaczego chcesz je wyłączyć? Czy masz powody, by sądzić, że optymalizacje są 1) włączone i 2) powodując problemy? Rzadko kiedy optymalizacja powoduje problemy z poprawnie napisanym kodem. Jednak często przydaje się użycie -O0 w połączeniu z -ggdb do debugowania. –