![]() |
Von Windows ausführbares Programm für Linux / MaxOS X
Hallo.
1) Generelle Frage: wie kann ich am besten von einem Windows System ausführbare Programme für Linux / MacOS X schreiben und kompilieren (Linux hat größere Priorität). Üblich verwende ich Delphi 7, habe aber auch Lazarus installiert (scheint zu funktionieren). 2) Kann man denn Lazarus unter Windows auf Kompilierung für Linux umstellen ? Wenn ja, wie ? 3) Wie kann ich die Lazarus Ausgabedatei (exe) auf ein absolutes Minimum an Dateigröße reduzieren ? Folgender Code bringt auf Lazarus 67 KB exe ein und auf Delphi 7 nur 14 KB.
Code:
Ich muss eigentlich nichts weiter als eine einfache Zeile (1 Funktionsaufruf) mit Verwendung von der Unit ShellApi kompilieren. Was mich auf "stolze" 259 KB auf Lazarus wirft und auf 14 KB unter Delphi 7 verbleibt.
program project1;
begin end. |
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Wenn es dir auf die Dateigröße so ankommt (dass es sowas heute immer noch gibt...), nimm C++, da sind die Dateien schon noch am kleinsten.
Bei Lazarus wird die Datei vermutlich kleiner, wenn du die Debuginformationen aus der Exe rauswirfst. Und wenn du Lazarus benutzt, solltest du auch unter Linux kompilieren. Das von Windows aus zu machen ist zwar möglich, aber sehr kompliziert und aufwendig. Dann zur Unit ShellAPI: Was für eine Funktion benutzt du denn, die auch unter Linux existiert? Ich dachte die Unit wäre nur für Windows. Reicht nicht vielleicht einfach ein Bash-Skript? |
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Zitat:
Bei XE2 müsstest du dich - falls du GUI-Anwendungen schreiben möchtest - mit FireMonkey beschäftigen, da die VCL unter Mac OS X und Linux nicht existiert. Mit Lazarus kannst du einfach die LCL verwenden. Grundsätzlich empfehle ich dir hier allerdings eine Linux VM zu verwenden, da du hier dann meist weniger Kopfschmerzen bezüglich der verwendeten Bibliotheken haben wirst (siehe Antwort auf Frage 2). Für Mac OS X empfiehlt es sich meist einen Mac zu besitzen (ich kann nicht mitreden, da ich noch nie für Mac OS X programmiert habe). Zitat:
Entpacke den Quellcode in einen Ordner (ich nenne ihn einfach mal %fpcdir%). Die Binutils entpackst du ebenfalls (der Ordner heißt nun %bindir%). Öffne eine Kommandozeile und gehe nach %fpcdir%. Dort gibt du das folgende Kommande ein:
Code:
Dabei ersetzt du %bindir% durch den entsprechenden Ordnernamen und %prefix% durch das gemeinsame Präfix der Binutils (wenn die binutils zum Beispiel "i386-linux-ld.exe", "i386-linux-as.exe", etc. heißen, dann gibst du für Präfix "i386-linux-" an (der abschließende Bindestrich ist teil des Präfix!).
make all OS_TARGET=linux CPU_TARGET=i386 CROSSBINDIR=%bindir% BINUTILSPREFIX=%prefix%
Hat alles erfolgreich funktioniert dann kannst du die "Installation" durchführen. Hast du dich für die selbe FPC Version entschieden, die auch dein Lazarus verwendet, dann sollte folgendes reichen:
Code:
Hierbei entspricht %lazdir% dem Verzeichnis deiner Lazarus-Installation (zum Beispiel C:\Lazarus) und %fpcver% dem Versionsverzeichnis unterhalb von "fpc" (zum Beispiel 2.4.4 oder 2.6.0).
make crossinstall OS_TARGET=linux CPU_TARGET=i386 CROSSBINDIR=%bindir% BINUTILSPREFIX=%prefix% INSTALL_PREFIX=%lazdir%\fpc\%fpcver%
Hast du eine andere Version verwendet, dann mach das folgende:
Code:
Hirebei ist %newfpcver% die Versionsnummer des Quellcodes den du verwendest (zum Beispiel 2.7.1).
make all install INSTALL_PREFIX=%lazdir%\fpc\%newfpcver%
make crossinstall OS_TARGET=linux CPU_TARGET=i386 CROSSBINDIR=%bindir% BINUTILSPREFIX=%prefix% INSTALL_PREFIX=%lazdir%\fpc\%newfpcver% copy %lazdir%\fpc\%fpcver%\bin\i386-win32\fpc.cfg %lazdir%\fpc\%newfpcver%\bin\i386-win32\ In der kopierten "fpc.cfg" musst du dann noch alle Pfade korrigieren (ein Search and Replace von %fpcver% mit %newfpcver% (natürlich die richtigen Werte ;) ) sollte ausreichen). Nur nötig, falls du eine andere FPC Version verwendet hast: Nun kannst du in Lazarus unter Einstellungen -> Einstellungen -> Umgebung -> Compilerdateiname den Pfad anpassen Bei einem Projekt kannst du nun unter Projekt -> Projekteinstellungen -> Compilereinstellungen -> Codegenerierung das Zielsystem auf Linux umstellen. Unter Projekt -> Projekteinstellungen -> Compilereinstellungen -> Andere die folgenden Einträge hinzufügen (natürlich wieder durch die richtigen Werte ersetzen):
Code:
Achtung: Verwendest du weitere Bibliotheken oder die GUI-Schnittstelle ist noch weitere Arbeit nötig, die ich mir jedoch selbst erst anschauen müsste.
-XP%prefix%
-FD%bindir% Summa summarum: Die Verwendung einer VM ist einfacher. Zitat:
2. Die Unit ShellAPI ist nur unter Windows verfügbar, also versuch es gar nicht erst diese unter Linux oder OS X zu verwenden. Gruß, Sven |
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Java! :stupid:
|
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Zitat:
|
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Zitat:
Zitat:
![]() Gruß, Sven |
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Code:
D:\lazarus\fpc\2.6.0\bin\i386-win32>make all OS_TARGET=linux CPU_TARGET=powerpc CROSSBINDIR=C:\bin BINUTILSPREFIX=i386-linux-
make: *** No rule to make target `all'. Stop. D:\lazarus\fpc\2.6.0\bin\i386-win32>
Code:
@JamesTKirk kannst du mir sagen warum das nicht funktioniert? D:\lazarus\fpc\2.6.0\bin\i386-win32>make OS_TARGET=linux CPU_TARGET=powerpc CROSSBINDIR=C:\bin BINUTILSPREFIX=i386-linux- make: *** No targets specified and no makefile found. Stop. D:\lazarus\fpc\2.6.0\bin\i386-win32> Ich habe die binutils-2.15-win32-powerpc-linux.zip runtergeladen und entpackt. Würde das gerne für die Architektur powerpc machen. Aber irgendwie klappt das nicht! |
AW: Von Windows ausführbares Programm für Linux / MaxOS X
Zitat:
Also ich hab auch die besten Erfahrungen damit gemacht unter Linux für Linux und Windows zu compilen, alles andere istwirklich Pain in the Ass. Zu MAC OS X kann ich leider nix sagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz