Wie kompiliere ich eine D-Anwendung ohne die D-Laufzeit?

Ich habe versucht, dies für immer herauszufinden, und es beginnt mich zu ärgern. Ich verstehe die D-Laufzeitbibliothek. Was es ist, was es tut. Ich verstehe auch, dass Sie eine D-App ohne sie kompilieren können. Wie was XoMB macht. Nun, XoMB definiert seine eigene Laufzeit, aber es gibt Fälle, in denen Sie keine eigene schreiben müssen, wenn Sie sie nicht benötigen. Ich verstehe, dass der DigitalMars D-Compiler (dmd), den ich verwende, eine Menge Dinge hinter den Kulissen für die Laufzeit erledigt, zum Beispiel Verweise auf bestimmte Dinge, je nachdem, was Ihr Programm benötigt. Und auch Dinge für JEDES Programm. Sie müssen diese also selbst definieren. Ich habe mich entschlossen zu experimentieren, es selbst herauszufinden und bin ziemlich weit gekommen. Damit meine ich, den Linker dazu zu bringen, immer weniger Fehler auszuspucken. Für einen Test möchte ich nur eine komplette Bare-Bones-App kompilieren, um die Dinge ohne Laufzeit zum Laufen zu bringen. Oder so wenig Laufzeit wie möglich. hier ist, was ich meine einzelne Quelldatei habe.

module main;

void _main()
{
    int a = 2 + 3;
}

Ich kompiliere mit: dmd -c main.d -defaultlib =

Dann verlinken Sie mit: link main.obj

Und das sind die Fehler, die ich bekomme: OPTLINK: Warnung 23: Kein Stack & OPTLINK: Warnung 134: Keine Startadresse

Sie können sehen, ich habe versucht, chaingng main zu _main, um die no start address error loszuwerden, aber trotzdem hat nicht geholfen. Was muss ich tun, um die letzten beiden Fehler auszubügeln? Wenn ich es zum Laufen bringen kann, denke ich, dass ich nachschlagen kann, was ich implementieren muss, um mehr Funktionen zum Laufen zu bringen. Aber wenn jemand bereit ist, mir dabei zu helfen, wäre das sehr zu schätzen!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage