Проблема с использованием SDCC в Makefile во время шага ссылки

StackOverflow https://stackoverflow.com/questions/3312165

Вопрос

Малое устройство C компилятор (SDCC) создаст файл IHX (Intel Hex), даже если на этапе ссылки есть неопределенные ссылочные ошибки. Это поведение вызывает проблемы при использовании SDCC в Makefile, потому что если вы устанавливаете файл IHX, чтобы быть вашим целевым, то не имеет хорошего способа узнать, что предыдущая попытка подключения не удалась.

Есть ли способ сказать SDCC для подавления вывода IHX, когда во время ссылки есть неопределенная ссылка? Если нет, какой лучший обходной путь? (я уже думал о одной).

Кроме того, я заинтересован в , почему SDCC был разработан таким образом, если кто-то знает.

Вот пример проблемы:

У вас есть файл называется TEST.C, который вызывает неопределенную функцию:

void foo();
void main()
{
    foo();
}
.

У вас есть простой Makefile для создания тестов .ihx от test.c:

test.ihx: test.c
    sdcc test.c
.

Вы пытаетесь скомпилировать TEST.C в первый раз и не удается:

C:\test>make
sdcc test.c

?ASlink-Warning-Undefined Global '_foo' referenced by module 'test'
make: *** [test.ihx] Error 1
.

Вы пытаетесь решить проблему, изменив то, что не является зависимостью IHX (например, makefile), и попробуйте снова скомпилировать:

C:\test>make
make: `test.ihx' is up to date.
.

Но сделайте не пытаться компилировать его, потому что SDCC уже создал файл IHX.

Это было полезно?

Решение

Я ничего не знаю о SDCC, поэтому извините, что не могу ответить на ваши вопросы относительно того, может ли вывод подавить или почему SDCC был разработан таким образом.

Я могу подумать о работе - вокруг: переименуйте файл IHX после успешной сборки и используйте новое имя в качестве цели Make.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top