Functionpointer auf genestete Methoden [gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Warf
Beiträge: 2146
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Warf »

Stevie hat geschrieben: Di 8. Okt 2024, 18:44 Natürlich kann man das alles (und bestimmt noch mehr) auch zu Fuß auf der Kommandozeile machen, aber das hier ist so einfach, dass man es auch einem Lazarus-Beginner zumuten kann. Und das ist sooooo wertvoll und wichtig für die Akzeptanz unter den Anfängern!
FPCUp kann dinge die nicht so einfach sind, z.B. cross compiler brauchen spezielle tools und die dokumentation was man braucht und wo man was bekommt ist absolut unterirdisch. Daher ist fpcup sehr wertvoll.

Doch was ich finde was eine berechtigte frage sein sollte, warum braucht es eine 11MB kompilierte executable um das selbe zu machen was ein 700 byte (inklusive Kommentare) script kann? Ich hab das oben mal zusammen in ein script gepresst und im post oben angehängt.

Wenn die beste option für einen installer ein Programm mit 200 tausend zeilen code (reiner code, kommentare + leerzeilen nochmal 50 tausend drauf), was auch in 10 zeilen bash code geht, dann läuft was falsch.

Plus FPCUp baut ja nicht mal den FPC wie es für die meisten nützlich ist, ein FPCUp build ist mehr als 1GB größer und braucht auch deutlich mehr zeit als notwendig.
Und nicht zu vergessen das FPCUp das einzige nicht kann was der name verspricht, updaten, denn die Versionsnummern von Lazarus und FPC sind gehardcoded, wenn man also stable updaten will braucht man erst mal einen updater für fpcup um damit Lazarus zu updaten. Bisschen ironisch oder?

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Warf hat geschrieben: Di 8. Okt 2024, 16:56
Niesi hat geschrieben: Di 8. Okt 2024, 13:58 https://github.com/LongDirtyAnimAlf/fpc ... e/releases

Auf "Show all 43 assets" klicken - ich nutze für Linux Mint die "fpcupdeluxe-x86_64-linux".

Mach Dir einen Ordner, leg das Programm rein und gib ihm das Recht, als Programm ausgeführt zu werden. Dann starten und Deine Version von Lazarus und Free-Pascal in einen Ordner Deiner Wahl installieren. Wenn Du das Paket nicht mehr brauchst: Einfach den Ordner löschen.

Ein weiteres Mal Danke an Alfred für diese tolle Tool ...
Man kann sich eine "dubiose" 11MB executable aus dem Internet laden, oder man machts einfach selbst mit 9 Befehlen:

Code: Alles auswählen

# Sources runterladen (shallow clone um Speicher zu sparen)
git clone --depth=1 https://gitlab.com/freepascal.org/FPC/source.git fpcsource
# Sourcen bauen mit platform FPC
make -C fpcsource all -j$(numcpus)
# Gebaute binaries in seperaten ordner installieren
make -C fpcsource install INSTALL_PREFIX=$(realpath ./fpc)
# Verbleibende buildartifakte entfernen um speicher zu sparen
git -C fpcsource clean -xdff
# fpc.cfg erstellen
fpcmkcfg -d basepath=$(realpath fpc/lib/fpc/3.3.1/) -o fpc/lib/fpc/etc/fpc.cfg
# Gebauten compiler linken
ln -s $(realpath fpc/lib/fpc/3.3.1/ppcx64) fpc/bin/ppcx64
# Lazarus sources runterladen (shllow clone um Speicher zu sparen)
git clone --depth=1 https://gitlab.com/freepascal.org/lazarus/lazarus.git
# Laztarus bauen
make -C lazarus all
# Lazarus config erstellen
echo "--pcp=$(realpath ./lazarus/config)" > lazarus/lazarus.cfg
PS: nicht das ich fpcup nicht vertraue, aber ich finde es irgendwie absurd sich irgendwelche (gigantischen) binaries runterzuladen für etwas was wirklich sehr sehr einfach ist selbst zu machen. Bonuspunkte das die installation mit dem code oben etwa 900 mb speicher einspart gegenüber fpcup und deutlich schneller geht

PS: Hab ein install script angehängt
Nun ja ...

Gerade eben habe ich beides ausprobiert (script und Befehle eingeben).

Funktioniert beides nicht ...

Script bricht ab, Befehl Nr. 2 endet so:

Bildschirmfoto vom 2024-10-09 08-42-22.png
Bildschirmfoto vom 2024-10-09 08-42-22.png (57.24 KiB) 2281 mal betrachtet


P.S.: Vielleicht kann einer der Admins die Beiträge zur Installation zu einem eigenen Thread machen und zu Installation - Linux verschieben. Ich denke, da wäre das besser aufgehoben ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6964
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Mathias »

Code: Alles auswählen

make -C fpcsource all -j$(numcpus)
Bei fpc darf kein -j stehen, da keine Parallel Abarbeitung möglich ist.
Dieser Komfort ist leider den C-Usern vorbehalten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Mathias hat geschrieben: Mi 9. Okt 2024, 11:14

Code: Alles auswählen

make -C fpcsource all -j$(numcpus)
Bei fpc darf kein -j stehen, da keine Parallel Abarbeitung möglich ist.
Dieser Komfort ist leider den C-Usern vorbehalten.
Dankeschön - geht aber trotzdem nicht ...
Bildschirmfoto vom 2024-10-09 11-52-47.png
Bildschirmfoto vom 2024-10-09 11-52-47.png (81.7 KiB) 2272 mal betrachtet
Irgendwie bin ich sehr sehr froh, dass es FpcUpDeLuxe gibt ... :lol:
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6964
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Mathias »

Hast du das git clone auch gemacht ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Warf
Beiträge: 2146
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Warf »

Mathias hat geschrieben: Mi 9. Okt 2024, 11:14 Bei fpc darf kein -j stehen, da keine Parallel Abarbeitung möglich ist.
Dieser Komfort ist leider den C-Usern vorbehalten.
Fpc schon, Lazarus nicht. Aber Lazarus baut sowieso relativ schnell, daher ist das verkraftbar
Niesi hat geschrieben: Mi 9. Okt 2024, 11:55
Mathias hat geschrieben: Mi 9. Okt 2024, 11:14

Code: Alles auswählen

make -C fpcsource all -j$(numcpus)
Bei fpc darf kein -j stehen, da keine Parallel Abarbeitung möglich ist.
Dieser Komfort ist leider den C-Usern vorbehalten.
Dankeschön - geht aber trotzdem nicht ...
Bildschirmfoto vom 2024-10-09 11-52-47.png
Irgendwie bin ich sehr sehr froh, dass es FpcUpDeLuxe gibt ... :lol:
Hast du auch die dependencies alle installiert?

Ich hab's Grade mit genau den befehlen auf einem neuen Linux Rechner installiert

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Warf hat geschrieben: Mi 9. Okt 2024, 13:31
...

Hast du auch die dependencies alle installiert?

Ich hab's Grade mit genau den befehlen auf einem neuen Linux Rechner installiert
Ich habe auf diesem Rechner bereits mit FpcUp eine Lazarus / FreePascal trunc installiert. Und nun noch einmal dies hier:
Bildschirmfoto vom 2024-10-09 17-19-36.png
Bildschirmfoto vom 2024-10-09 17-19-36.png (45.32 KiB) 2254 mal betrachtet
Es bricht wieder beim zweiten Befehl ab ...

Bildschirmfoto vom 2024-10-09 17-14-37.png
Bildschirmfoto vom 2024-10-09 17-14-37.png (78.73 KiB) 2254 mal betrachtet

Fehlt da noch was?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Mathias
Beiträge: 6964
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Mathias »

Numcups fehlt.
Lass das ganze j Zeugs weg.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Mathias hat geschrieben: Mi 9. Okt 2024, 17:59 Numcups fehlt.
Lass das ganze j Zeugs weg.
Das allein ist es wohl auch nicht ...

Bildschirmfoto vom 2024-10-09 18-27-37.png
Bildschirmfoto vom 2024-10-09 18-27-37.png (37 KiB) 2251 mal betrachtet
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Warf
Beiträge: 2146
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Warf »

Hast du fpc installiert?

Stevie
Beiträge: 173
Registriert: Di 27. Feb 2024, 22:40

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Stevie »

... und spätestens an der Stelle würde ein durchschnittlicher Anfänger die Lust verlieren und aufgeben.

Ist es da nicht vielleicht doch besser, die 3-4GB in eine FPCUpDeluxe-Installation zu investieren und dafür auf Knopfdruck eine fertige, funktionierende und vollständige Installation in die Hand zu bekommen? Die mag dann eventuell nicht perfekt sein, aber immerhin gut genug zum Loslegen...

Warf
Beiträge: 2146
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Warf »

Ein Anfänger sollte sowieso nicht Trunk benutzen. Trunk ist die aktive Entwicklungsumgebung und ist absolut nicht Stabil. Wenn man nicht weiß wie man den FPC baut dann sollte man eventuell nicht den Live Entwicklungsbranch vom FPC benutzen.

Also ich will jetzt nicht Elitistisch klingen, aber bei Trunk kommt es halt auch mal vor das mal ein commit drauf ist bei dem dann was plötzlich nicht mehr funktioniert. Wenn man trunk benutzt muss man also das nötige wissen haben um zumindest mal ein paar commits zurück zu springen und damit zu kompilieren um auf eine version zu rollbacken die noch funktioniert hat. Und wenn das einzige was man über den FPC source bauen weiß ist wie man einen Knopf in FPCUp drückt, wird das nix.

Ich kann verstehen das Leute gerne die vielen neuen Features in Trunk benutzen würden. Implicit Specialization, Extended RTTI, Function References sind alle samt extrem coole neue features. Aber es hat einen Grund warum die nur auf Trunk sind und es noch keine neue Stable FPC Version gibt, denn das ganze ist noch nicht Stabil.
Und wenn man einen nicht Stabilen Entwicklerbuild benutzen will, sollte man zu mindest vorrausetzen das man weiß wie man diesen baut.

Und klar kann man auch FPCUp benutzen um stable zu bauen, aber hier ist der totale witz an der Sache, wie fpcup Stable baut ist:
1. FPC Stable version von der Website runterladen
2. Die website FPC version benutzen um damit den FPC source zu bauen

Wenn man sich sowieso die precompiled binary von der Website Zieht, warum den extra schritt mit FPC selbst kompilieren machen?

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Warf hat geschrieben: Mi 9. Okt 2024, 23:41
...

Wenn man sich sowieso die precompiled binary von der Website Zieht, warum den extra schritt mit FPC selbst kompilieren machen?
Weil es funktioniert ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 602
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Niesi »

Warf hat geschrieben: Mi 9. Okt 2024, 18:34 Hast du fpc installiert?
Wie meinst Du dies?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Warf
Beiträge: 2146
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Functionpointer auf genestete Methoden [gelöst]

Beitrag von Warf »

Niesi hat geschrieben: Do 10. Okt 2024, 07:21 Weil es funktioniert ...
Fpcup lädt sich einfach die binary von der fpc website runter um damit den source zu kompilieren. Wenn die fpc binary von der Website nicht funktionieren würde könnte fpcup auch nicht funktionieren.

Wenn du nur eine stabile fpc installation willst gibt es absolut keinen Grund fpcup zu benutzen, denn fpcup macht auch nix anderes als ne stabile fpc version runterzuladen
Niesi hat geschrieben: Do 10. Okt 2024, 07:22 Wie meinst Du dies?
Du brauchst den fpc um den fpc sources zu kompilieren. Fpcup installiert dir einfach die letzte stable von der Website (Im bootstrap Verzeichnis). Es ist aber natürlich viel einfacher einfach die system distro zu benutzen:

Code: Alles auswählen

sudo apt-get install fpc

Antworten