[StormC v4] – Tuto, impossible de compiler « Hello World »
-
Alors au fait, il suffit de rajouter stddef.h en haut du programme C.
Mais je n’ai jamais vu ça dans un programme C; en fait ce header aurait du être inclus dans stdio.h, qui l’inclus au tout début.
Ce qui est bizzare, c’est qu’il y à un ifndef de stddef au début de stdio, donc logiquement si c’est pas défini ça doit l’inclure, sauf que la ça veut dire que c’est défini.
Donc dans ce cas ça veut dire qu’il manque un header par défaut ….
La définition c’est _INCLUDE_STDDEF.
ça permet d’inclure , ou pas, stddef. qui inclue sys/types.h
et c’est précisément types.h qui définit size_t, le premier type manquant et provoquant l’erreur.
Je parie que quelquepart dans les fichiers occultes de stormC, cette valeur est définie, du coup en incluant explicitement stddef, ça marche.
Donc à mon avis, il suffit de réussir à virer ce défine qui est mis je sais pas ou, pour que ça marche.
c’est peut-être l’objet du patch.
Au passage, je serais fort surpris que le StormC ait été testé avec le hello the world fourni,
car le nom du fichier n’est pas correct dans son propre projet, un espace à été remplacé par un underscore pour hello_world.c , ensuite pour le faire fonctionner j’ai du supprimer à la main les fichiers des dossiers car je pense que ça embrouillait le projet avec les fichiers déjà présents (map et autre), mais à la fin ça marche…..donc faudrait juste comprendre pourquoi on à besoin du stddef.h, peut-être une définition à rajouter quelquepart , je sais pas.
c’est au niveau du préprocesseur que ça se passe.
L’erreur est une erreur du préprocesseur qui dit que sizeof_t n’est pas défini, et ce n’est pas normal….
Voici l’extrait de stdio.h , avec mes commentaires, tu comprendra mieux ce qui se passe.
Ce header est spécifique à StormC, si je prends le même de gcc, il n’a pas du tout la même forme.
Donc c’est du merdier à eux, et y’a un bug, faut pas chercher plus loin je pense.
Voici un exemple de doc de la fonction setvbuf sur laquelle nous obtenons l’erreur, et dans l’exemple en C plus bas on voit bien qu’on à pas besoin de rajouter un include, mais si je rajouter l’include avant chez moi ça marche, forcément on à les bons defines dans ce cas…
https://linux.die.net/man/3/setvbufJe met l’erreur en capture, et le cas ou ça marche, tu comprendra mieux je pense.
StormC/include/stdio.h
======================================#ifndef _INCLUDE_STDIO_H
#define _INCLUDE_STDIO_H/*
** $VER: stdio.h 1.04 (24.07.2000)
** StormC Release 4.0
**
** ‘(C) Copyright 1995-2000 Haage & Partner Computer GmbH’
** All Rights Reserved
*/#ifndef _INCLUDE_STDDEF_H ; <– cette variable est forcément définie car stddef n’est pas inclus… ce n’est pas normal
#include <stddef.h> ; <– ce fichier n’est pas inclus par défaut, or il le devrait, dans ce fichier _INCLUDE_STDDEF_H n’est pas positionné, donc c’est fait ailleurs.
#endif#ifndef _INCLUDE_STDARG_H
#include <stdarg.h>
#endif#ifdef __cplusplus
extern « C » {
#endif(….)
Ligne 61:
int setvbuf(FILE *, char *, int, size_t);(….)
======================================Attachments:
#ifndef _INCLUDE_STDDEF_H ; <– cette variable est forcément définie car stddef n’est pas inclus… ce n’est pas normal
Si <stddef.h> n’est pas inclus dans ce point, c’est que quelqu’un à défini _INCLUDE_STDDEF_H là où il ne le fallait pas. C’est ca qui n’est pas normal. D’une façon ou d’une autre la définition de _INCLUDE_STDDEF_H a été forcée dans ton projet. Il n’y aurait pas un -D_INCLUDE_STDDEF_H ajouté sur la ligne de commande ? Ou (mais je ne connais pas StormC assez), si c’est comme SAS/C et qu’il utilise des headers pécompilés, il y a un soucis avec ces derniers. Revoir les settings du projet.
Samuel.
Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
A500 Vampire V2+ ^8^ 🙂
(mais aussi TO8, TO8D, TO9. Groupe PULS.)been j’ai fait un essai tout simple.
Sur AOS 3.2 FFS j’ai installé stormc et j’ai créé un projet, ça marche.
je fais un lha je copie sur l’amiga en os 3.9 PFS
et j’ai des erreurs de l’espace…..
En dehors du helloworld, et du helloworld fourni dans l’install stormc (qui ne référence même pas le bon fichier source, qui à été renommé je pense après création du projet), tenter d’utiliser un simple NewScreen ça ne fonctionne pas non plus, idem, des includes pas chargés car des variables définies j’sais pas ou pour le préprocesseur.
même projet même logiciel même includes car ils sont dans le dossier StormC.
La différence, l’os et le filesystem.
Je pense que le merdier calcule certaines variables sur je ne sais pas quel critère, c’est à devenir fou cette histoire.
Pour les -D, ça doit être la section du preprocessor, defines, le seul truc défini c’est NDEBUG.
je compare avec snoopdos les deux fonctionnement, pas d’erreur c’est lessieur, mais du coté aos3.9 il charge bien tous les includes référencés dans les includes parents, alors que coté amiga, non, il charge pas ce qui est dans les includes en recursif, super étrange…..
bref, je suis entrain d’éplucher ça à coup de snoopdos, il doit bien y avoir une différence quelquepart.
Le GAG c’est que StormC4, le requirement recommandé c’est AOS 3.9 …… 🙁
bon ben du coup, ça change rien….
un autre exemple, screens.h , qui devrait inclure un bataillon de headers genre, gfx.h, clip.h , etc….coté amiga, il n’inclue rien du tout, coté aos 3.9 ça marche.
C’est comme si il se foutait royalement de tous les #ifndef en fait et qu’il les considéraient comme toujours faux.
c’est impossible d’avoir autant de defines pré définis en avance, en tout cas je pense pas.
par contre, si on choisi le compilo StormC3 ça marche impec. c’est juste avec gcc que ça délire.
je crois que je devrais prendre deux trois verres, du serum de lucidité, pour essayer de comprendre mieux , ça pourra pas être pire 😀
@piark
J’ai compilé ton « coucou » de la première page sans aucun problème :C’est pourtant un copié-collé direct de ton post.
Je tourne sous OS 3.9 et j’utilise le compilateur par défaut de StormC 4, c’est-à-dire GCC. Je n’ai, pour l’instant, installé aucun patch de StormC 4.
Ton problème est vraiment mystérieux.
Prédateur Chess | Amiga 500 + ACA500 | Amiga 1200 + ACA1233
GCC utilise parfois des includes précompilés, et s’ils ont mal été faits, ca peut merder. Regarde si tu as des
*.gch
dans le paysage (gnu compiled headers), renommes les en*.gch_
histoire qu’ils ne soient pas trouvés, et relance une compilation. Ca marchera ptet mieux.Samuel.
Amiga A500 + GVP530 (8Mo/fpu/mmu/scsi) - en panne 🙁
A500 (+ 1Mo PPS), A1200 (Blizzard-IV/fpu/64Mo)
A500 Vampire V2+ ^8^ 🙂
(mais aussi TO8, TO8D, TO9. Groupe PULS.)je sais pas,
mais je peux juste dire que la même install de StormC, installé sur émulateur et FFS, ça marche (par contre je me souviens plus si c’était os 3.2 ou 3.9, je crois c’était 3.2).
installé sur mon a1200 os3.9 tout neuf, mais PFS3, ça marche pas….et si je bascule sur le compilo stormC, le même projet, le même code, ça passe.
de toute façon, le debug les yeux bandés c’est pas franchement évident et j’ai pas encore passé mon diplôme de grand voyant maraboutiste, du coup, sans erreur de snoopdos, ni du workbench, sans aucun message de stormC, sans logs, baaaaah ……..
Apres peut-être que je n’ai pas regardé au bon endroit.
Par contre, ça serait intéressant de savoir c’est si quelqu’un à réussi à faire tourner stormc4 en mode gcc avec du PFS3, et AOS3.9 (ou 3.2), parce que quand même le point commun c’est la rom qui n’est pas d’origine, allez savoir si y’a pas un bug avec la combinaison PFS3 + rom3.9/3.2….
@Piark:
StormC4 est sur ma partition principale, qui est un simple FFS.Mais je conseille vraiment l’achat de Cubic IDE : il ne coûte plus que 19,90€ et il est installé avec un vieux GCC de 2001 et un VBCC que tu peux mettre à jour dans sa dernière version de 2022 (VBCC génère des exes plus compacts que GCC).
Il peut aussi être utilisé pour le StormC et le SAS/C. Entre autres.
Attention par contre : en raison de la longueur de certain chemins (nombreuses imbrications de répertoires), j’ai dû installer Cubic IDE sur une partition PFS3 (qui est en version gratuite complète sur Aminet).
Prédateur Chess | Amiga 500 + ACA500 | Amiga 1200 + ACA1233
Salut,
Je ne sais pas si vous avez testé (moi je suis qu’en FFS !!) mais sur le site de http://hp.alinea-computer.de/Amiga/Storm/ il y a une mise à jour (Patch20001219) qui parle de PFS :
Changes:
1. Problems using the system on harddisks that are formatted with PFS are
solved. Both StormC and StormServer can now be installed on a PFS
formatted partition.Peut être qu’il fait l’appliquer ?
https://youtube.com/@stephbb75
Ah bah super, merci !
On à parlé de ce patch mais je ne l’ai pas encore testé.
Ce qui me perturbe, c’est que j’ai acheté cette version l’année dernière et le vendeur me dit avoir fait le cd avec les dernières versions, donc le patch devrait en faire parti.
mais je vais tester ça, si ça marche, je verrais avec lui sur le pourquoi du comment, il y aura certainement une explication cohérente dans tout ça.
Coucou
Dans ces cas ou il y a un binz d’installation , SnoopDos aide. C’est gratos sur aminet. on lance snoopdos , on lance l’outil mal installé, on lui fait faire son caca pas beau, et snoopds va logguer les appels du compiler sur les fichiers et les loadlibrary(), et si l’appel a fonctionné ou pas. Du coup on sait direct ce qui s’est pas chargé, les assign manquant, etc …. ya aussi Scout qui est bien pour tout connaitre de se qui se passe dans l’os.Rappel aussi: la commande dos « info » liste les devices , la commande « assign » sans param liste les assign.
comme n’importe quel script peut faire « assign add » ou « assign remove » va savoir ce qui se passe.
Un binaire du compilateur peut tout simplement avoir été bousillé: ma vielle CM de 1200 avait l’ide foireux et bousillait des fichiers de temps en temps. -> recapper/réviser ou mettre un pistorm qui peut se passer de l’ide. et sinon réinstall si possible.Note: OS3.14 et 3.2 ont des FFS équivalent à PFS, faut juste cocher longname , cela a fait de moi un homme (une femme?) heureu.se.
Je teste ce soir le patch, et on va voir.
Je pense pas que la machine soit en défaut, j’ai écrit tellement de volumes d’archives, copié pendant des nuits entières (un lha de plusieurs go de plein de fichiers sur 030 c’est une expérience), que si j’avais eu un soucis de fiabilité je crois que je l’aurais vu autrement.
Par contre, la ROM 3.9 d’AOS3.9, que je n’ai pas pu patcher avec le dernier boing ball car ça plante au boot avec, peut expliquer certains bugs, probablement. après tout si y’a du patch, c’est pas sans raison.
En dehors de ça, pour FFS : J’arrive pas à savoir si le FFS d’AOS 3.2 est résistant aux codeurs bourrés 🙂
En assembleur, quand je me loupe (oui ça peut arriver même aux plus mauvais!) , ça m’est arrivé une paire de fois de voir la diode d’activité du disque dur s’allumer signe que mon rotozoom n’était pas entrain de faire que tourner une image…..
Et quand ça arrivait à l’époque, avant SFS/PFS, je perdais systématiquement la validation du FFS, on passait des heures à tout revalider avec des outils, et parfois ça terminait avec un hexdump du disque dur et des outils pour tenter de récupérer ce qui était récupérable.
Alors en 2024, FFS pour moi : Ce n’est même pas envisageable en rêve.
Sauf si le FFS maintenant à une écriture décalée, ou une journalisation qui permet le retour à la situation précédente avec annulation de l’opération foirée.
En théorie il faut attendre que le voyant du disque soit éteint vous me direz, oui mais vous oubliez dans ce cas, oui, mais en pratique même en faisant ça, j’arrivais à avoir des problèmes.
Ok c’était pas toutes les cinq minutes, mais croyez moi revalider un disque de 500mo c’était déjà pénible, alors les 32go que j’ai actuellement, j’ai vraiment pas envie de tenter l’aventure.
après l’option 2, apprendre à coder bourré, mais je préfère utiliser PFS 😀
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › [StormC v4] – Tuto, impossible de compiler « Hello World »