У меня есть make-файл для проекта, где исполняемый файл чувствителен к производительности, и содержит много встроенных последовательностей asm, а также некоторый код C, который вызывает эти последовательности. Сейчас мы строим исполняемый перечисляя все файлы C в одной команде компиляции/ссылок, например:В чем разница между компиляцией/связыванием в одной команде и компиляцией/компоновкой в отдельных командах?
gcc $(CFLAGS) $(LFLAGS) a.c b.c -o outfile
Но это занимает много времени, чтобы произвести исполняемый файл.
Есть ли разница в производительности мудр в результате исполняемый (OUTFILE) для ломки ссылку компиляции &, как это:
gcc $(CFLAGS) -c a.c -o a.o
gcc $(CFLAGS) -c b.c -o b.o
gcc $(LFLAGS) a.o b.o -o outfile
Эта скорость будет до сборки, потому что мы бы выполнить инкрементную сборку, и мы могли бы также использовать make -j для распараллеливания сборки.
BTW, мы используем gcc 5.1+.
Возможно, вам захочется исследовать, какова идея make и make-файлов на самом деле. Подсказка: ваш первый вариант - это полная противоположность. И gcc не является компоновщиком или инструментом сборки. Ваш вопрос не связан с gcc- или C. – Olaf
Спасибо, только что отредактирован. –
Я думаю, что мой оригинальный пост был запутанным. Я только что отредактировал его. Исполняемый файл чувствителен к производительности (я не хочу изменять метод сборки, если он делает исполняемый файл медленнее). Я знаю, что могу улучшить скорость сборки, разбив сборку на отдельные шаги, но я не знаю, будет ли результирующий исполняемый файл работать медленнее. –