Как я могу скомпилировать в сборку с GCC - PullRequest
26 голосов
/ 05 ноября 2011

Как мне скомпилировать в сборку вместо исполняемого файла с gcc. Я знаю, что есть флаг -S , но где я могу использовать его в make-файле. Например, если я использую флаги -O3 -o exe_name , где я должен поставить флаг -S?

Ответы [ 3 ]

30 голосов
/ 06 ноября 2011

Я предлагаю также использовать -fverbose-asm, потому что тогда у сгенерированного ассемблера есть несколько сгенерированных комментариев, которые «объясняют» код.Например:

gcc -S -fverbose-asm -O2 foo.c

сгенерирует в foo.s (с некоторыми комментариями) код ассемблера, созданный путем компиляции foo.c

. И понять, что делают оптимизации GCC, можно дажепопробуйте -fdump-tree-all (но при этом получается сотни файлов!).

23 голосов
/ 05 ноября 2011

Вы можете попросить 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)

13 голосов
/ 05 ноября 2011

Поместите это почти везде.

gcc -O3 -S -o output.asm ...

сохранит сгенерированную сборку в output.asm.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...