Compilern von Github

Begonnen von Klauserus, 11. Juli 2020, 16:03:14

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Klauserus

Hallo Zusammen

gibt es hier jemand der ab und an Code-Projekte von Github compilert?

Speziell RetroArch Cores.

Wenn ja, bitte melden. Ich bräuchte Hilfe
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Kenaio

Öhm ja, kommt hier und da schon mal vor. RetroArch Cores eher weniger. Welches Problem hast du denn?

Klauserus

#2
 Um ehrlich zu sein, weiß ich nicht genau was ich alles brauche zum  Compilern.

Es handelt sich um diesen Core. Den gibt es als ARM für die Switch.

In der Readme.md heißt es immer "build with make". Klingt für mich nach Linux Terminal :D
Wird aber wahrscheinlich der Compiler gemeint sein. Aber was für einer? Brauche ich sowas wie DevkitPro?

Würde mich da gerne mal rein fuchsen

Serverseitig zeigt er mir auch was an:

Build started
set Path=C:\msys64\usr\bin;%Path%
Fetching repository commit (5271021)...OK
Total: 16.2 MB in 1177 files
cd %makefile_location%
make -f %makefile_name% platform=%platform%
fatal: not a git repository (or any of the parent directories): .git


Also war in in der Annahme, man könne die Compilern lassen. Dort scheint es aber einen Fehler zu geben.
Auch wenn compilert würde, weiß ich dann auch noch nicht wie ich die Datei in eine NRO wandle.

Aber alles der Reihe nach.
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Kenaio

#3
Also zunächst einmal arbeitest du hierfür am einfachsten auf nem Linux Rechner, der Einfachheit halber vielleicht in einer VM. Kompilieren auf Windows kann gerne frickelig werden, Make ist auch standardmäßig ein POSIX Tool und wurde "nur" auf Windows portiert – spar dir den Aufwand, das unter Windows zum Laufen zu bringen.

Um das Programm zu kompilieren, kommst du nicht um die Shell herum. Diese öffnest du, navigierst in einen Ordner deiner Wahl und tippst ein:
git clone https://github.com/libretro/beetle-psx-libretro.git
Damit erzeugst du einen Unterordner beetle-psx-libretro, welcher den aktuellsten Quellcode enthält.
Mittels "cd beetle-psx-libretro" wechselst du nun in den Ordner und kompilierst das Programm, indem du einfach nur "make" eintippst. Mit "make clean" kannst du alle (temporären) Dateien, die der Build Prozess erzeugte, löschen. Möchtest du den HW-Renderer mit erzeugen, nutzt du "make HAVE_HW=1" zum kompilieren, Details dazu findest du auf der GitHub Seite. (Readme.md) Welche Befehle genau ausgeführt werden, nachdem du "make" eingetippt hast, findest du im Makefile.

Ggf. erhältst du Fehlermeldungen, weil dir Pakete fehlen. Diese musst du im Einzelnen auswerten und nachinstallieren. Ich gehe aber davon aus, dass es reicht, das Paket "build-essential" zu installieren (sudo apt-get install build-essential), welches Make und GCC als C Compiler enthält.

Make erleichtert dir übrigens die Schritte des Kompilierens und Linkens, siehe Anhang. (entnommen aus Joseph Yiu, The definitive guide to the ARM Cortex-M3, 3rd edition, 2014, Auszug)

Klauserus

Oh Super. Vielen Dank. Da setze ich mich doch am Abend gleich nochmal hin...
Habe ich das richtig verstanden, dass Linker die Zieldatei erzeugt? Im Diagramm z.B. .elf
Kannst du mir noch sagen wie man eine nro für Switch ausgibt?...falls ich soweit komme

;D

Vielen dank und einen schönen Sonntag
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Kenaio

Genau, der Linker erzeugt die Zieldatei. Vielleicht hast du Glück und es kommt gleich eine .nro raus, ansonsten würde ich dann gucken was du hast und wo du hin willst  :)

Klauserus

#6
Ich scheitere schon an der Installation von git  ::)



Ich sage mit "J" ich möchte fortfahren, er bricht aber ab.

sudo apt update
sudo apt upgrade
sudo apt install git


nu kommt das raus wenn ich mit dem oben genannten Befehlen installieren will:

git clone https://github.com/libretro/beetle-psx-libretro.git
WARNING:root:could not open file '/etc/apt/sources.list'


Der Befehl 'git' wurde nicht gefunden, kann aber installiert werden mit:

sudo apt install git


Hab ich aber schon installiert ^^

Hab ich schon erwähnt, dass ich Linux Neuling bin? :D

SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Takeshi

Ich bin zwar kein Linux-Neuling, aber GIT habe ich unter Linux noch nie genutzt, bisher nur unter Windows in einer IDE integriert.

Ich würde jetzt mal ganz blöd machen, was dir die Kommandozeile sagt: git installieren. Oder hast du das schon gemacht?

Klauserus

#8
Alle Fehler behoben. Das war vielleicht ein gefrickel.

Habe noch Build Essential installiert... make HAVE_HW=1 ging leider nicht. gl/h. Verzeichnis nicht gefunden. Wenn ich mich recht erinnere wird make HAVE_HW=1 die GPU benutzt?
Make läuft gerade....ui dat dauert....nächstes mal setze ich mich an meinen Ryzen PC...

deps/lightning/lib/jit_print.c: In function '_jit_print_node':
deps/lightning/lib/jit_print.c:27:43: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'jit_pointer_t {aka void *}' [-Wformat=]
#define print_str(value)  fprintf(stdout, "%s", value)
                                           ^
deps/lightning/lib/jit_print.c:283:13:
   print_str(node->v.n->u.p);
             ~~~~~~~~~~~~~~                 
deps/lightning/lib/jit_print.c:283:3: note: in expansion of macro 'print_str'
   print_str(node->v.n->u.p);
   ^~~~~~~~~
deps/lightning/lib/jit_print.c:27:43: warning: format '%s' expects argument of type 'char *', but argument 3 has type 'jit_pointer_t {aka void *}' [-Wformat=]
#define print_str(value)  fprintf(stdout, "%s", value)
                                           ^
deps/lightning/lib/jit_print.c:288:13:
   print_str(node->v.n->u.p);
             ~~~~~~~~~~~~~~                 
deps/lightning/lib/jit_print.c:288:3: note: in expansion of macro 'print_str'
   print_str(node->v.n->u.p);
   ^~~~~~~~~
CC deps/lightning/lib/jit_print.c
CC deps/lightning/lib/jit_size.c
deps/lightning/lib/lightning.c: In function '_jit_patch_abs':
deps/lightning/lib/lightning.c:1544:18: warning: variable 'mask' set but not used [-Wunused-but-set-variable]
     jit_int32_t  mask;
                  ^~~~
deps/lightning/lib/lightning.c: In function '_jit_patch_at':
deps/lightning/lib/lightning.c:1567:18: warning: variable 'mask' set but not used [-Wunused-but-set-variable]
     jit_int32_t  mask;
                  ^~~~
deps/lightning/lib/lightning.c: In function '_jit_emit':
deps/lightning/lib/lightning.c:2012:12: warning: variable 'result' set but not used [-Wunused-but-set-variable]
     int    result;
            ^~~~~~
In file included from deps/lightning/lib/lightning.c:3492:0:
deps/lightning/lib/jit_x86.c: In function '_patch':
deps/lightning/lib/jit_x86.c:2219:18: warning: variable 'flag' set but not used [-Wunused-but-set-variable]
     jit_int32_t  flag;
                  ^~~~


Der Code wird wohl nicht viel bedeuten. Hat auf jedenfall abgeschlossen. Nur ist im Ordner keine Datei gewachsen. Ich vermisse also den Output.
Ich gehe mal auf die Suche...

Danke nochmal. Ich hab FUN  ;D

NACHTRAG:



Die markierten Dateien kommen raus. Damit kann ich leider wenig anfangen.
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Takeshi

Ich glaube, du hast die Dateien jetzt kompiliert und musst sie jetzt noch linken. Ja, das ist der Grund, warum Linux ewig so gar nicht in den Quark kam. Das ist einfach nur ätzend, wenn man erst zum Programmierer werden muss, um sich ein Programm zu installieren. Einerseits schwört man auf Open Source, dass der einmal entwickelte Code jedem zur Verfügung steht und kein Software-Entwickler die Arbeit ein zweites Mal erledigen muss und an anderer Stelle legt man großen Wert darauf, dass jeder Anwender die gleiche Arbeit immer und immer wieder erledigen muss (von der er keine Ahnung hat, nicht haben will und auch nicht haben müsste), um das immer gleiche komplilierte Ergebnis zu erhalten und eine Anwendung einfach nur zu benutzen. Es ist echt lächerlich.

Kenaio

Du meintest eingangs, du möchtest das Ergebnis in eine NRO packen. Ist es sicher das, was du brauchst? Ich habe verstanden, dass das ein RetroArch Core ist, welcher selber nicht im HomeBrew Launcher geöffnet werden kann (dafür bräuchtest du eine .nro), sondern lediglich in den RetroArch Einstellungen eingebunden wird?

Klauserus

Die Cores liegen alle im nro Format im Core Ordner von RetroArch vor, der wiederum auf der SD Karte der Switch liegt.

Kannst du hier mal runterladen wenn du magst und dir ansehen.

Wie das RetroArch selbst verwaltet weiß ich nicht, da Retroarch ebenfalls in einer NRO gesoeichert ist und ausgeführt wird.

ahh hier:

Zitat von Switchbrew

[i]NRO is the executable format for non-ExeFS binaries.

It starts with the NRO-start structure then the "NRO" header and mainly describes .text, .rodata, and .data segments (like a short-form of ELF program headers)[/i]
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Kenaio

Da kann ich dir leider nicht weiterhelfen, wie du das in ein Paket bekommst. Tut mir leid! :-[

Klauserus


Macht nichts. Aber durch dich bin ich schon einmal viel weiter gekommen.  ;D
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Kenaio

Wenigstens etwas, freut mich :)