Разница между опциями -O и -g при компиляции кода заключается в их функциях.
Опция -O указывает уровень оптимизации кода, который будет выполнять компилятор. 3 С помощью этой опции компилятор пытается сократить размер кода и время его выполнения, не выполняя оптимизаций, которые занимают много времени компиляции. 3 Некоторые уровни оптимизации, которые можно указать с помощью -O: -O1, -O2, -O3. 2
Опция -g используется для генерации символов отладки. 3 С её помощью в объектный или исполняемый файл помещают отладочную информацию для отладчика, например gdb. 5 Опция должна быть указана и для компиляции, и для компоновки. 5
Таким образом, опция -O фокусируется на оптимизации кода, а опция -g — на поддержке отладки.