Еще один вопрос Makefile - PullRequest
       0

Еще один вопрос Makefile

0 голосов
/ 27 января 2011

У меня есть простое приложение, состоящее из небольшого количества файлов. Файлы apptest.c, apptest.h, apptest.S. Что меня немного смущает, так это та часть, где apptest_AUTO.s вступает в игру. У кого-нибудь есть идея, какова цель этого? Я мог представить, что еще одна копия ассемблерного кода создается после того, как обрабатывается препроцессором до того, как он фактически будет использоваться в качестве входных данных для сборки?

CC=/bin/sparc-elf-gcc
CPP=/bin/sparc-elf-cpp
CIS_ASM=bin/sparc-elf-as

all: apptest.exe

apptest.exe: apptest.o
 $(CC) apptest.o -o apptest.exe

apptest.o: apptest.c apptest.h apptest.S
 $(CC) $(SFLAGS) apptest.c -o apptest_AUTO.s
 $(CPP) apptest.S >> apptest_AUTO.s
 $(CIS_ASM) apptest_AUTO.s -o apptest.o

Ответы [ 2 ]

1 голос
/ 29 января 2011

Это странный способ, но он вставляет предварительно обработанную версию apptest.S в конец кода ассемблера, компилируя apptest.c. Конечным результатом будет один объектный файл, который создается как из apptest.c, так и из apptest.S.

Похоже на взлом, чтобы предотвратить конфликт имен между двумя объектными файлами. Более традиционный подход будет выглядеть примерно так:

CC=/bin/sparc-elf-gcc
CPP=/bin/sparc-elf-cpp
CIS_ASM=bin/sparc-elf-as

all: apptest.exe

apptest.exe: apptest.o apptest.s.o
    $(CC) $+ -o apptest.exe

apptest.o: apptest.c apptest.h
    $(CC) $(CFLAGS) apptest.c -o apptest.o

apptest.s.o: apptest.s
    $(CIS_ASM) apptest.s -o apptest.s.o
1 голос
/ 27 января 2011

Кто-то хотел получить возможность автоматически модифицировать исходный код ассемблера перед его компиляцией в объектный код. Я видел это раньше, не для SPARC, но обычно для более старых архитектур (M680x0, Z8000) и гораздо более старых компиляторов C (1980-е, а не 2010-е).

С учетом показанной последовательности вряд ли что-то будет полезным.

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