Wie kann ich ein Programm für jedermann kompilierbar machen?

Für Fragen von Einsteigern und Programmieranfängern...
Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Targion hat geschrieben:=> DEB-Paket packen
=> IPK-Setup erstellen (hähä... Diese Lösung (noch) nicht ganz so ernst nehmen)
=> Mittels ldd die Abhängigkeiten rausfinden und die nötigen Pakete manuell installieren.
64bit binaries laufen generell nicht auf 32bit-Systemen, umgekerhrt aber schon.
Wie baue ich denn ein DEB-Paket, hast du irgendwo ein gutes Tutorial?
IKP??
ldd gibt aber sehr viel aus. :( Das kann man doch keinem antuen. :P

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von pluto »

Muss das gleich so umständlich sein ?

Wenn ich es richtig verstanden habe ist das Problem mit den zwei Varianten: 32 und 64 Bit. Kannst du diese denn auf deinem System erzeugen ? Wenn ja, mache doch einfach zwei Zip-Archive. Nicht jeder möchte gleich ein Programm Installieren. Gerade wenn es so ein einfaches Programm ist. Es sei denn dein Projekt besteht aus vielen Dateien, die an bestimmten Orten hinkopiert werden müssen, dann macht es Sinn.

Das ist auch ein Thema was ich nicht verstehen kann: Die meisten Programm müssen Installiert werden, obwohl es Eigentlich gar kein Sinn macht.
MFG
Michael Springwald

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von RSE »

Ich für meinen Teil wäre nicht bereit extra ein Programm in meinem System zu installieren, um mir die Bilder als Slideshow ansehen zu können. Ich würde sie mir stattdessen mit meinem bevorzugten Bildbetrachtungsprogramm ansehen. Bestenfalls würde ich ein Programm benutzen, welches ausführbar auf der CD beigelegt ist und von dem ich weiß, dass es auf meinem System keine Spuren hinterlässt. Gleiches gilt natürlich für ein Script in einem HTML o.ä.

nur nochmal so in den Raum geworfen :twisted: :twisted:

Ich denke einfach, dass ihr hier einen maximalen Aufwand für einen minimalen Nutzen treibt, der auch noch mit diversen Risiken bestückt ist (zumindest aus Sicht eines Windows-Nutzers). Und um Nachfragen vorzubeugen: Ich meine, dass Windows-Systeme dazu neigen instabil und lahm zu werden, wenn man dauernd Sachen für einmaligen Nutzen installiert, aber Linux ist ja kein Windows... damit kenn ich mich nicht aus. Ich werde mich hiermit aus diesem Thread zurückziehen.
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von pluto »

Ich meine, dass Windows-Systeme dazu neigen instabil und lahm zu werden, wenn man dauernd Sachen für einmaligen Nutzen installiert, aber Linux ist ja kein Windows...
Ich würde sagen das trifft wohl auch auf gewisse Art und weise auf Linux zu. Ich denke aber auch das Linux damit besser umgehen kann, aber ich gebe dir recht:
Es gibt einfach zwei Arten von Programmen: Bei den einen macht es Sinn diese zu Installieren z.b. ein Spiel von über 2,4 GB, bei der anderen Art macht es einfach überhaupt kein Sinn. Das könnte man nur schön verpacken in ein Archiv. Mit einer kleinen Beschreibung und Fertig.
MFG
Michael Springwald

Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Das Programm erstellt eine XML-Datei, die bei Ubuntu Karmic Koala, dann eine Hintergrund Slideshow generiert. ;) Aber ich werde es mal mit der einfach Binär-Datei probieren, die aber trotz

Code: Alles auswählen

strip $PROJECT
relativ groß ist. :(

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Targion »

RSE hat geschrieben:Ich denke einfach, dass ihr hier einen maximalen Aufwand für einen minimalen Nutzen treibt, der auch noch mit diversen Risiken bestückt ist (zumindest aus Sicht eines Windows-Nutzers). Und um Nachfragen vorzubeugen: Ich meine, dass Windows-Systeme dazu neigen instabil und lahm zu werden, wenn man dauernd Sachen für einmaligen Nutzen installiert, aber Linux ist ja kein Windows... damit kenn ich mich nicht aus. Ich werde mich hiermit aus diesem Thread zurückziehen.
Unter Linux ist es üblich, dass Software in Paketen verteilt wird, welche leider für jede Distribution unterschiedlich sind. Diese Pakete müssen als Administrator (Root) installiert werden und machen Anwendungen global verfügbar. Pakete lassen sich restlos entfernen, das Linux-System wird i.d.R. von Programminstallationen nicht beeinträchtigt.
(Die Schwachstellen des Paketmanagement versuche ich, mit dem Listaller-Projekt zu umgehen, bis das "fertig" ist, dauert es aber noch...)
@Alci: Kannst du mir die Ausgabe von ldd per PN schicken? Dann jage ich das kurz durch ein Hilfsprogramm, welches ein Script erstellt. Dieses muss dann zuvor auf einem Ubuntu-System ausgeführt werden und die Anwendung läuft perfekt.
Die Problematik 32bit<->64bit wird so aber nicht umgangen.

EDIT: Danke! Das kleine script im Anhang führ ein simples apt-get aus und installiert alle nötigen Abhängigkeiten. Vielleicht werde ich eine kleine Auskopplung der Listaller-Tools mal hier veröffentlichen, die sind nämlich wirklich praktisch. (hängen aber alle vom Listaller-Daemon ab, das ändere ich grade)
Das Script funktioniert nur unter Ubuntu und Debian!
Dateianhänge
installdeps.sh
Apt-get script
(150 Bytes) 83-mal heruntergeladen

Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Targion, wie hast du das denn umgewandelt? Kann ich das nicht auch einfach selbst machen? ;)

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Targion »

Du musst halt wissen, welche Libs dein Programm verwendet. Mein Tool untersucht die Binaries mit ldd, extrahiert dann die Bibliotheksnamen und generiert dann mittels einiger anderer Tools eine Liste an Paketen, in denen diese libs vorkommen. Daraus werden dann die sinnvollsten Treffer ausgewählt und zu einem PackageKit-Kommando zusammengefasst. In deinem Fall habe ich das einfach auf einen apt-get-Befehl umgelenkt.

Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Targion hat geschrieben:Du musst halt wissen, welche Libs dein Programm verwendet. Mein Tool untersucht die Binaries mit ldd, extrahiert dann die Bibliotheksnamen und generiert dann mittels einiger anderer Tools eine Liste an Paketen, in denen diese libs vorkommen. Daraus werden dann die sinnvollsten Treffer ausgewählt und zu einem PackageKit-Kommando zusammengefasst. In deinem Fall habe ich das einfach auf einen apt-get-Befehl umgelenkt.
Ich habe mir jetzt auch ein Skript geschrieben, doch leider ist die Anzahl der Abhängigkeiten sehr groß.

Code: Alles auswählen

#!/bin/sh
ldd WSG | sed 's!=>.*$!!' | sed 's!^. */l.*/!!g' | sed 's/^. *l/l/g' | sed 's/(.*$//g' |  sed 's/^/sudo apt-file -l search /' | bash | sort | uniq | tr '\n' ' ' | sed 's/^/sudo apt-get install /'

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von pluto »

Wenn du dein Programm mit GTk2 Kompilierst, dürften die meisten Anwender schon die meisten Sachen haben, würde ich sagen.
MFG
Michael Springwald

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Targion »

Alci hat geschrieben:Ich habe mir jetzt auch ein Skript geschrieben, doch leider ist die Anzahl der Abhängigkeiten sehr groß.

Code: Alles auswählen

#!/bin/sh
ldd WSG | sed 's!=>.*$!!' | sed 's!^. */l.*/!!g' | sed 's/^. *l/l/g' | sed 's/(.*$//g' |  sed 's/^/sudo apt-file -l search /' | bash | sort | uniq | tr '\n' ' ' | sed 's/^/sudo apt-get install /'
Cool! Auf die Idee Bash zu benutzen bin ich noch nicht gekommen. (Naja, brauche ich auch nicht)
Die meisten Abhängigkeiten sind auf jedem Linux-System mit X11, also GTK+-unabhängig. Deshalb kommt die Liste bei mir aus effizienzgründen vor der Installation noch durch einen Filter.
Apt-Get sollte aber da schnell genug sein.

Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Ich habe mein Programm hier veröffentlicht: Es funktioniert nur auf Ubuntu Karmic oder neuer ;)

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Targion »

Kompiliere das Teil mal mit der aktuellen stabilen Lazarus-Version 0.9.28-2. Dann sollte sich das Problem mit der GTK2-GUI erledigt haben.

Alci
Beiträge: 29
Registriert: Mi 27. Mai 2009, 08:48
OS, Lazarus, FPC: Linux (L 0.9.26.2-0 FPC 2.2.2)
CPU-Target: 32Bit

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Alci »

Targion hat geschrieben:Kompiliere das Teil mal mit der aktuellen stabilen Lazarus-Version 0.9.28-2. Dann sollte sich das Problem mit der GTK2-GUI erledigt haben.
Das neue Lazarus gibt mir nur folgenden Fehler:

Code: Alles auswählen

Hint: Start of reading config file /etc/fpc.cfg
Hint: End of reading config file /etc/fpc.cfg
Free Pascal Compiler version 2.2.4-3 [2009/06/04] for i386
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for i386
Compiling WSG.lpr
Compiling gwsg.pas
PPU Loading /home/niklas/.lazarus/lib/RunTimeTypeInfoControls/i386-linux/rttictrls.ppu
PPU Source: rttictrls.pas not found
PPU Source: rttictrls.lrs not found
Recompiling RTTICtrls, checksum changed for LResources
rttictrls.pas(9,82) Fatal: Can't find unit RTTICtrls used by gWSG
Wenn ich Lazarus als root starte, funktioniert es perfekt. :) Wie kann ich den Pfad zu /usr/lib/lazarus/0.9.28.2/components/rtticontrols/lib/i386-linux/gtk2/rttictrls.ppu
ändern?

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Wie kann ich ein Programm für jedermann kompilierbar machen?

Beitrag von Targion »

Wie hast du Lazarus denn installiert?

Antworten