Как я могу скомпилировать в сборку с GCC
Как скомпилировать в сборку вместо исполняемого файла с GCC. Я знаю, что есть флаг -S, но где я могу использовать его в make-файле. Например, если я использую флаги -O3 -o exe_name, где я должен поставить флаг -S?
3 ответа
Я предлагаю также использовать -fverbose-asm
потому что тогда у сгенерированного ассемблера есть некоторые сгенерированные комментарии, которые "объясняют" код. Например:
gcc -S -fverbose-asm -O2 foo.c
будет генерировать в foo.s
(с некоторыми комментариями) ассемблерный код, созданный компиляцией foo.c
И чтобы понять, что делают оптимизации GCC, можно даже попробовать -fdump-tree-all
(но это производит сотни файлов!).
Вы можете попросить GCC создать файл сборки вместо объектного файла (или исполняемого файла).
Например:
gcc -Wall -c test.c
Будет создан объектный файл из test.c (test.o).
gcc -Wall -o test test.c
Создает исполняемый файл с именем "test" из test.c
gcc -Wall -S test.c
Будет производить сборочный файл из test.c (test.s)
Положите это в любом месте.
gcc -O3 -S -o output.asm ...
будет хранить сгенерированную сборку в output.asm
,