Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - fNek

Seiten: [1]
1
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 02. December 2012, 09:18 »
Danke!
2
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 30. November 2012, 18:58 »
Offenbar definiert mir der Präprozessor nicht die Konstante _cplusplus, die ich in einem ifdef benutzt habe. Auf den Fehler hätte ich selber kommen können... Tut mir leid. Wie heißt die Konstante, die bei C++ immer definiert ist, wenn nicht _cplusplus?
3
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 30. November 2012, 18:55 »
Ha! Recht gehabt, MNemo!
Aus irgendeinem Grund wandelt der Compiler die Funktionsnamen um - obwohl ich sie als extern "C" vorausdeklariert habe. Zählt das für den C++-Compiler nicht? Oder hat der Präprozessor die Konstante _cplusplus nicht erkannt?

Mein Lösungsansatz ist jetzt, die Funktionen direkt bei der Definition als extern "C" zu bezeichnen. Ich poste gleich, ob es hilft.
4
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 28. November 2012, 17:21 »
Ich habe alles so gemacht, wie im Tutorial (C++-Kernel); init_ctors ist eine Funktion von mir, kmain ist die Kernel-MAIN Funktion.

init_ctor ist die Funktion, die im Tutorial "C++-Kernel mit GRUB" als initializeConstructors aufgelistet wird. Weil ich mir gedacht habe, dass das früher oder später Tippfehler ergibt, habe ich sie umbenannt in init_ctors. (Tippfehler gab es schon - ein Mal hbe ich z.B. als initialiseConstructors auf die Funktion verwiesen...)

Mein Startup-Code
Zitat von: start.S
/*
 * Copyright (C) 2012 Martin Formanek
 *
 * This file is part of MakeMyOS.
 *
 * MakeMyOS 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.
 *
 * MakeMyOS 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 MakeMyOS.  If not, see <http://www.gnu.org/licenses/>.
 */

.section multiboot
/* contains the multiboot header */

#define MBH_MAGIC 0x1BADB002
#define MBH_FLAGS 0x3
#define MBH_CHECKSUM -(MBH_MAGIC + MBH_FLAGS)

.int MBH_MAGIC
.int MBH_FLAGS
.int MBH_CHECKSUM

.section .text
/* contains some preperations */

.global _start
.extern kmain
.extern init_ctors
_start:
  cmp %eax, 0x2BADB002
  jne _stop
  call init_ctors
  push %ebx
  call kmain
 
 _stop:
  cli
  hlt
  jmp _stop
5
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 28. November 2012, 17:06 »
Fehlermeldung:

Zitat von: make
ld -Tkernel.ld -o bin/kernel obj/start.o obj/main.o
obj/start.o: In function `_start':
(.text+0x9): undefined reference to `init_ctors'
obj/start.o: In function `_start':
(.text+0xf): undefined reference to `kmain'
make: *** [bin/kernel] Fehler 1

Kein Tippfehler, nicht extern "C" vergessen...
Ich weiß nicht, woran es liegen könnte
6
Lowlevel-Coding / Undefined reference to XXX
« am: 27. November 2012, 20:03 »
Ich erhalte bei meinem C++-Kernel vom Linker Fehlermeldungen, weil die Hauptfunktion und die Konstruktorenfunktion (wie im C++-Tutorial) nicht gefunden werden. Es ist nicht dieser Fehler mit dem extern "C" (das habe ich schon mindestens 100 mal überprüft). Es ist auch kein Tippfehler. Was kann es sonst sein?

Sources auf Anfrage
7
Lyrisches Eck / Re: Wortspiel
« am: 12. October 2012, 17:32 »
Die wahllos variierenden Variablen verwahrlosen zusehends im immer weiter quellenden Quelltext, sodass die Register restlos reichlich rostige, reglose Fehler registrieren.
Seiten: [1]

Einloggen