Entwicklungsumgebung / Crosscompiler

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Entwicklungsumgebung / Crosscompiler

Beitrag von Uwe_9988 »

Hallo zusammen,

wie sieht eure Entwicklungsumgebung aus?

Ich baue gerade verschiedene Virtualboxen (OS X, Ubuntu 10.10, Win XP, etc.) unter Win7 64 zusammen, auf denen ich dann Snapshots von Lazarus und FPC installiere, damit man wenigstens mal testen kann, wie das so auf den anderen Plattformen funktioniert und aussieht was man so zusammen programmiert. ;)

Wie macht ihr das bei euch? Gibt es einen Crosscompiler, den man zum Beispiel unter Windows für alles verwenden könnte und dann nur noch die fertigen Apps rüberkopieren muss zum Testen?


Grüße,
Uwe

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Socke »

Prinzipiell kannst du auf einer Plattform Cross-Compiler für alle anderen Architekturen erstellen und verwenden. Du musst dabei "nur" aufpassen, dass jeweils die benötigten Bibliotheken vorhanden sind und die Pfade dazu richtig konfiguriert sind (in der fpc.cfg). Das mit dem Testen wird dann natürlich schwer, weil du da die ganze fremde Plattform brauchst.

Bei mir habe ich fpc und Lazarus aus dem svn in meinem Benutzer-Verzeichnis und je nach dem, was ich brauche, einen Cross-Compiler für WinCE und Win32 neben meinem Linux-32bit Compiler.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von corpsman »

Cross Compiling ist ne Geile Sache, aber ich halte es da einfach.

Ich Nutze die Lazarus SVN Version unter Linux 32-Bit. Da meine Homepage aber auch Win32 unterstützt habe ich mir eine Virtualbox WinXP gebastelt.

Entwickelt wird dann alles unter Linux und bei der Veröffentlichung kurz in VB compiliert. Fertig.
--
Just try it

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Uwe_9988 »

Socke hat geschrieben:Prinzipiell kannst du auf einer Plattform Cross-Compiler für alle anderen Architekturen erstellen und verwenden.
Und wie macht man das? Braucht man dafür einfach entsprechende makefiles für den fpc oder ist da noch mehr nötig?

Ich hab' bis jetzt ein bissel hin und her probiert und mir dabei doch öfter mal eine Lazarus-Umgebung komplett zerschraddelt. :mrgreen:

Probiert habe ich zum Beispiel Folgendes:
Verzeichnisse: lazarus32 und lazarus64
Darin waren die entsprechenden Snapshots der Win-Versionen von Laz und FPC.
Aufruf dann mit Angabe des Userverzeichnisses: C:\lazarus32\lazarus.exe --PCP=C:\Users\Uwe\AppData\Local\lazarus32

Schön wäre da natürlich nur eine Umgebung und die Umschaltung erfolgt nur in Lazarus einfach über das Target-OS. Geht das? :)


Grüße,
Uwe

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von theo »

Afaik kannst du vernünftig für Linux und Win nur auf Linux entwickeln.
Dort läuft unter Wine auch gleich das Exe zum testen.

Wie ich heute im Intl. Forum gelesen habe, geht die Einrichtung der X-Kompilierung da sehr einfach:

http://www.lazarus.freepascal.org/index ... l#msg61656" onclick="window.open(this.href);return false;
Nicht getestet.

Linux-Kompilierung auf Win einrichten ist zu kompliziert.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Socke »

Uwe_9988 hat geschrieben:Schön wäre da natürlich nur eine Umgebung und die Umschaltung erfolgt nur in Lazarus einfach über das Target-OS. Geht das? :)
Zuerst brauchst du natürlich einen FreePacal-Crosscompiler für jede zu unterstützende Plattform. Dazu musst du dir die entsprechenden Quellen (mit Makefiles) von der FPC-Webseite herunterladen.
Danach kannst du dir die Crosscompiler selber bauen (wobei der installationspfad der selbe sein sollte):

Code: Alles auswählen

# lokale Plattform
make install INSTALL_PREFIX="/intallations/pfad"
# Crosscompiler für Win32, x86
make crossinstall OS_TARGET=win32 CPU_TARGET=x86 INSTALL_PREFIX="/installations/pfad"
Für weitere Informationen zu den Parametern kann ich nur die buildfaq empfehlen. Nun noch die fpc.cfg anpassen und die Umgebungsvariable PATH korrigieren (bzw. zumindest die Einstellungen zum fpc in Lazarus ändern).

Sobald alle Crosscompiler erstellt wurden, kannst du damit beginnen die LCL und alle anderen Packages zu übersetzen. Lazarus selbst musst du nur für dein Entwicklungssystem übersetzen. In älteren Verisionen musst du dazu im Menü "Werkzeuge - >Lazarus übersetzen ..." (oder ähnlich) das Paket LCL (und alle anderen gewünschten) auswählen und für jede Plattform übersetzen. Jetzt solltest du (in der Theorie, wenn alles richtig konfiguriert wurde) in der Lage sein, deine Projekte durch Änderung des Zielsystems in den Projekt-Einstellungen zu crosscompilen.

(ACHTUNG: war alles sehr kurz gefasst und mit Sicherheit nur ausreichend, wenn man eh schon weiß, wie es geht)
theo hat geschrieben:Linux-Kompilierung auf Win einrichten ist zu kompliziert.
Ich lese immer nur: Ja es geht, aber es ist sooo kompliziert. Könnte es sein, dass einfach kein Interesse daran besteht und sich niemand die Mühe macht, eine brauchbare Anleitunge zu verfassen (nicht dass ich das jetzt machen möchte)? Oder woran scheitert es genau?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von carli »

Socke hat geschrieben:
theo hat geschrieben:Linux-Kompilierung auf Win einrichten ist zu kompliziert.
Ich lese immer nur: Ja es geht, aber es ist sooo kompliziert. Könnte es sein, dass einfach kein Interesse daran besteht und sich niemand die Mühe macht, eine brauchbare Anleitunge zu verfassen (nicht dass ich das jetzt machen möchte)? Oder woran scheitert es genau?
- Windowser würden sich nicht die Mühe machen, ein komplettes Linux-System aufzubauen, damit man die Executable linken kann
- Linuxer würden sich nie die Mühe machen, sich wieder in Windows hereinzufinden, um dann den Linker zum Laufen zu bekommen.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Socke »

carli hat geschrieben: - Windowser würden sich nicht die Mühe machen, ein komplettes Linux-System aufzubauen, damit man die Executable linken kann
- Linuxer würden sich nie die Mühe machen, sich wieder in Windows hereinzufinden, um dann den Linker zum Laufen zu bekommen.
Also ein Linux-System habe ich hier, das wäre das geringere Problem. Ist der Linker (gnu ld) so schwierig zu konfigurieren bzw. überhaupt nicht zu bauen? Was ist mit dem FPC-internen ELF-Writer?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Uwe_9988 »

So, ich fang mal an...

Geht gleich gut los! :mrgreen:

Entpackt habe ich fpcbuild2.4.2.zip im Verzeichnis C:\fpc

Nach:

Code: Alles auswählen

cd \fpc
make install
kommt gleich

Code: Alles auswählen

No libgdb.a found, supply NOGDB=1 to disable debugger support
Gebe ich NOGDB an, macht er weiter aber ich will ja Debuggersupport. ;)

Dann hab ich mal MinGW installiert aber das behebt das Problem auch nicht.

Wie muss man denn den gdb unter Windows installieren, damit es weitergeht?


Grüße,
Uwe

P.S.: Das hat sich erledigt. Habe das Verzeichnis mit den Libs unter fpcsrc\libgdb\win32 angelegt und gefüllt...

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Uwe_9988 »

Soweit ist jetzt erstmal alles durchgelaufen.

Ähm, doofe Frage: Wohin kompiliert das makefile eigentlich?

Finde kein bin-Verzeichnis mit dem neuen Compiler, das ich dann in Lazarus angeben könnte.

2. doofe Frage: Erstellt man mit

Code: Alles auswählen

# lokale Plattform
make install INSTALL_PREFIX="/intallations/pfad"
# Crosscompiler für Win32, x86
make crossinstall OS_TARGET=win32 CPU_TARGET=x86 INSTALL_PREFIX="/installations/pfad"
einen oder zwei Compiler? :roll:

Soweit ich es bis jetzt kapiert habe, gibt man mit INSTALL_PREFIX den Pfad zum Bin-Verzeichnis eines Compilers für die gewünschte Plattform an. So hat es bei mir jedenfalls bei Win64 funktioniert, wenn es denn funktioniert hat.


Grüße,
Uwe

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von af0815 »

noch doofere Frage: BuildFAQ gelesen ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Uwe_9988
Beiträge: 30
Registriert: Fr 14. Jan 2011, 11:02

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Uwe_9988 »

Teilweise. ;)

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Entwicklungsumgebung / Crosscompiler

Beitrag von Socke »

Möglicherweise benötigst du die libgdb.a nur für’s Debugging mit der fp-Textmode-IDE, nicht aber um GDB-Debugging-Informationen zu erzeugen. Lazarus verwendet den GDB direkt und ist daher von der libgdb.a unabhängig.

Mit jedem "make install" wird der Compiler erstellt und installiert. Bei INSTALL_PREFIX gibt man den Pfad für die gesamte FPC-Installation an. Alles Weiter siehe buildfaq.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten