Question

Le petit appareil C compilateur C (SDCC) produira un fichier IHX (Intel Hex), même s'il existe des erreurs de référence non définies lors de l'étape de liaison. Ce comportement provoque des problèmes lors de l'utilisation de SDCC dans un maquefile car si vous définissez le fichier IHX pour être votre cible de tâche, alors ce n'est pas un bon moyen de savoir qu'une tentative antérieure à la liaison a échoué.

existe-t-il un moyen de dire à SDCC de supprimer la sortie IHX lorsqu'il y a une référence non définie lors de la liaison? Sinon, quelle est la meilleure solution de contournement? (j'ai déjà pensé à un).

En outre, je suis intéressé par pourquoi SDCC a été conçu de cette façon si quelqu'un le sait.

Voici un exemple du problème:

Vous avez un fichier appelé test.c qui appelle une fonction non définie:

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

Vous avez un simple maquillage pour la construction d'un test.Ihx de Test.c:

test.ihx: test.c
    sdcc test.c

Vous essayez de compiler test.c pour la première fois et il échoue:

C:\test>make
sdcc test.c

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

Vous essayez de résoudre le problème en modifiant quelque chose qui n'est pas une dépendance de l'IHX (telle que le maquillage) et essayez de compiler à nouveau:

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

mais ne pas essayer de le compiler car SDCC a déjà créé le fichier IHX.

Était-ce utile?

La solution

Je ne sais rien de SDCC, je suis donc désolé de ne pas pouvoir répondre à vos questions concernant si la sortie peut être supprimée ou pourquoi le SDCC a été conçu de cette façon.

Je peux penser à un travail autour: renommez le fichier IHX après une construction réussie et utilisez le nouveau nom comme une cible de fabrication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top