J'utilise tutoriels James M pour écrire un noyau. J'écris le code avec un compilateur croisé pour elf-i386 Arch sous macOS 10.12 avec GCC 6.2.0 et Binutils.
Tout est compilé saufmain.c
, ce qui échoue avec cette erreur:
Erreur: attendu '=', ',', ';', 'asm' ou '__attribute__' avant 'int'.
Cependant, le fichier est exactement tel qu'il est dans le tutoriel. Quelqu'un peut-il m'aider à comprendre pourquoi?
/*
Sierra Kernel
kernel.c -- Main kernel file
Copyright (C) 2017 Jacobo Soffer <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <os.h>
int main(struct multiboot *mboot_ptr)
{
kprint("Welcome to the Sierra Kernel! \n"); // Test VGA Driver
kprint(BUILD_FULL); // Print version information
asm volatile ("int $0x3"); // Test interrupts
asm volatile ("int $0x4");
}
Un référentiel public avec tout le code du noyau est disponible sur: https://gitlab.com/SierraKernel/Core/tree/master
int main(struct multiboot, *mboot_ptr)
A un extra "," il semble
essayer
int main(struct multiboot *mboot_ptr)
Peut-être que c'est une réponse tardive, mais généralement l'erreur pointe vers quelque chose qui ne va pas dans le fichier inclus juste avant int, dans votre cas, c'est os.h
, essayez de détecter s'il manque un ;
dans ce fichier ou dans un fichier inclus.
Si vous essayez de compiler avec le dialecte C89 C, vous aurez ce problème. essayez de c99 CFLAGS + = -std = c99