GCC: comstackr une application sans relier de bibliothèque

Je sais comment comstackr une application C sans lier une bibliothèque utilisant GCC dans une application embarquée sans système d’exploitation juste en configurant la ou les fonctions de démarrage et éventuellement le fichier de démarrage d’assemblage.

Au lieu de cela, je ne suis pas capable de faire la même chose sous Windows (j’utilise MINGW32 GCC). Il semble que la liaison avec -nostdlib supprime également tout ce qui doit être exécuté avant main, donc je devrais écrire un démarrage spécifique mais je n’ai trouvé aucun document à ce sujet.

La raison parce que je dois comstackr sans C std lib, c’est que j’écris un C std lib réduit pour les petits microcontrôleurs 32 bits et je voudrais tester et tester cette bibliothèque en utilisant GCC sous Windows. Donc, s’il y a une alternative plus simple, c’est bon pour moi.

Merci.

J’ai trouvé la solution en ajoutant -nostdlib et -lgcc ensemble à ld (ou gcc utilisé comme éditeur de liens). De cette manière, la librairie standard C n’est pas automatiquement liée à l’application, mais tout ce qui est nécessaire au démarrage de l’application est lié.

J’ai également constaté que l’ordre de ces commutateurs est important, qu’il peut ne pas fonctionner du tout, signaler l’absence de la fonction at_exit () ou fonctionner sans erreur / avertissement en fonction de l’ordre et de la position des options.

J’ai découvert une autre complication en utilisant les IDE basés sur Eclipse car il existe différentes approches dans le menu Paramètres afin d’écrire les options dans le bon ordre, je devais les définir à différents endroits.

Après cela, j’ai eu un nouveau problème: je ne pensais pas que les bibliothèques de tests unitaires nécessitent au moins une fonction capable d’écrire dans stdout ou dans un fichier.

J’ai trouvé que l’utilisation de “” et de <> oblige le compilateur et l’éditeur de liens à utiliser les modules de bibliothèque que je souhaite dans ma bibliothèque et la bibliothèque standard C.

Donc, par exemple:

#include "ssortingng.h" // points to my library include #include  // points to C stdlib include 

me permet de tester toutes les fonctions de chaîne de la bibliothèque en utilisant les fonctions stdlib stdl. Il fonctionne avec les compilateurs GCC et GCC.