amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > VS Code: Cross Compiling [ - Suche - Neue Beiträge - Registrieren - Login - ]

-1- [ - Beitrag schreiben - ]

09.03.2025, 02:09 Uhr

Data2006
Posts: 56
Nutzer
Hallo zusammen,

ich habe unter Win 10 im VS Code (1.98.0) die Erweiterung Amiga C/C++ Compile, Debug & Profile von Bartman^Abyss installiert.

Den C/C++ habe ich von Microsoft installiert gehabt.
Ach und noch C/C++ Extension Pack ebenfalls von Microsoft.

Ich habe einen Ordner HalloWelt angelegt. Und ein kleines C-Programm zum Testen:
code:
#include <stdio.h>

int main(void)
{
    printf("Hallo Welt. C-Programm\n");
    return 0;
}


Wie kann ich das Programm jetzt für Amiga kompilieren und starten (im VS Code, unter Win 10 sollte das Amiga-Programm ja nicht laufen)?

Eigentlich drücke ich doch nur F5. Da kann ich aber nix mit Amiga Compiler sehen. Was muß ich tun?

Vielen Dank und gute Nacht.

LG
Heiko

[ - Antworten - Zitieren - Direktlink - ]

12.03.2025, 08:39 Uhr

Primax
Posts: 499
Nutzer
@Data2006:

Ich selbst bin da leider nicht bewandert und kann helfen, aber ich habe bei Leuten nachgefragt, die es wissen :)

Peter Mackay hat netterweise sich das angesehen (https://petmac.dev/):

"Ich habe den Beitrag nicht übersetzt, aber wenn ich mir den Codeschnipsel ansehe, kann ich sagen, dass Bartmans GCC nicht mit einer Standardbibliothek ausgeliefert wird, so dass der "stdio.h"-Header fehlt und es kein printf gibt.

Im Allgemeinen wird typischer C-Code, den man auf dem PC verwenden kann, nicht kompiliert.

Der Benutzer sollte anhand des Beispiels, das mit der Erweiterung geliefert wird, prüfen, welche Art von Code funktionieren wird."

[ - Antworten - Zitieren - Direktlink - ]

12.03.2025, 13:27 Uhr

Data2006
Posts: 56
Nutzer
@Primax:

Guten Morgen,

kann ich die fehlenden Header-Files (z. B. stdio.h) nicht einfügen? Welche Dateien müßte ich wohin kopieren?

Ich schätze mal die iostream-Headerdatei für z. B. std::cout und std::cin wird so auch nicht funktionieren.

Die VS Code-Extension für den Amiga macht ja so kaum Sinn. Jedenfalls wüßte ich nicht was ich damit machen sollte.

Im (emulierten) Amiga selber mit Lattice C klappt es ja auch mit printf().

LG
Heiko

[ - Antworten - Zitieren - Direktlink - ]

12.03.2025, 16:56 Uhr

Primax
Posts: 499
Nutzer
@Data2006:
Antwort eines weiteren Nutzers:

"Wie bereits beantwortet wurde, enthält das Plugin keine der C-Bibliotheken, so dass Sie keine von ihnen verwenden können. Es unterstützt die vollständige Sprache, nur nicht die Bibliotheken, vor allem, weil diese viel Platz benötigen und langsam sein würde.

Sie können stattdessen die Amiga-ROM-Aufrufe für eine ähnliche, aber alte Bibliotheksunterstützung verwenden.
Diese sind alle hier dokumentiert: http://amigadev.elowar.com/read/ADCD_2.1/Libraries_Manual_guide/node0000.html

Der beste Anfang ist, das Beispielprojekt zu erstellen und es sich anzusehen, um zu sehen, ob Sie bereit sind oder auf einem so niedrigen Niveau arbeiten wollen. Das müssen Sie, wenn Sie wollen, dass etwas auf einem A500 schnell ist.

Als einfache printf-Alternative gibt es KPrintF "

[ Dieser Beitrag wurde von Primax am 12.03.2025 um 16:56 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

14.03.2025, 13:47 Uhr

Mikkel
Posts: 63
Nutzer
Man könnte auch sagen, das hier ist das klassische Beispiel dafür, weshalb die Classic-Amigas seinerzeit am Markt nicht mehr bestehen konnten. Standard-Libs wurden entweder gar nicht oder nur anfangs für AOS 2.x und 3.x portiert und sind aus heutiger Sicht veraltet. Dadurch hat man, wenn man in C oder C++ dafür programmieren will, genau zwei Möglichkeiten: Entweder auf die ROM-Funktionen zurückgreifen falls es welche gibt, oder die benötigte Funktion selbst (ggf. in Assembler) implementieren. Das macht die Entwicklung aufwendiger und im professionellen Bereich teurer.

Folgt man z.B. dem Vorschlag mit dem KPrintF, dann sind die Programme die man schreibt, nicht ohne weiteres portabel. Also wenn man Programme schreiben will, die sich für AOS, Linux, MacOS und Windows kompilieren lassen, braucht man entweder die Standard-Libs oder man muss sich beim Amiga sogenannte Alias-Header schreiben oder besorgen, welche Standard-Aufrufe wie printf() auf ROM-Aufrufe wie KPrintF() umleiten.

Am Ende beschränkt man sich damit aber selbst. Denn das was die Amigas seinerzeit vom Rest der Welt unterschieden hat, wurde eben nie für PC & Co. umgesetzt.

[ - Antworten - Zitieren - Direktlink - ]

15.03.2025, 16:29 Uhr

FlynnTheAvatar
Posts: 51
Nutzer
@Mikkel:
Das ist leider falsch.
Jeder kommerzielle C-Kompiler ist mit einer C-Library geliefert worden (AzteC, Lattice-C, SAS-C). Für SAS-C gab es sogar eine C++-Standard-Library.

Auch die freien Compiler wie DICE-C und VBCC kommen mit ihrer eigenen C-Library. Und auf OS4 gibt es inzwischen drei Implementationen: newlib, clib2 und clib4.

Das VScode-Plugin hat keine C-Library, weil Standard-C-Programme zu schreiben nicht der Use-Case von dem Plugin ist. Das ist für Demos, und die übernehmen die Maschine. Da werden noch nicht einmal Systemroutinen benutzt. Da macht eine C-Library keinen Sinn.

[ - Antworten - Zitieren - Direktlink - ]


-1- [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > VS Code: Cross Compiling [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2025 by amiga-news.de - alle Rechte vorbehalten.
.