Crosscompiling von Linux nach FreeBSD
Crosscompiling von Linux nach FreeBSD
Hallo Liste,
ich muss ein paar eigene Programme auf einem Root Managed Server ans laufen bringen. Auf dem vituellen Server läuft ein FreeBSD 10.1-RELEASE-p4.
Ein "Hallo Welt" habe ich unter Linux 32Bit (OpenSuSe 13.2) kompiliert und ausprobiert,
Ich bekomme folgende Fehlermeldung:
ELF binary type "0" not known.
Exec format error. Falsche Archiktektur.
Was kann ich tun?
BerLin
ich muss ein paar eigene Programme auf einem Root Managed Server ans laufen bringen. Auf dem vituellen Server läuft ein FreeBSD 10.1-RELEASE-p4.
Ein "Hallo Welt" habe ich unter Linux 32Bit (OpenSuSe 13.2) kompiliert und ausprobiert,
Ich bekomme folgende Fehlermeldung:
ELF binary type "0" not known.
Exec format error. Falsche Archiktektur.
Was kann ich tun?
BerLin
-
- Beiträge: 6207
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: Crosscompiling von Linux nach FreeBSD
Root Managed Server
Was ist dort für eine CPU verbaut ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
- photor
- Beiträge: 445
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
- CPU-Target: 64Bit
Re: Crosscompiling von Linux nach FreeBSD
Hallo BerLin,
aus meiner früheren Zeit mit FreeBSD (4 bis 7) meine ich mich erinnern zu könne, dass FreeBSD die Möglichkeit hatte, Linux-Binaries direkt auszuführen. Man musste nur den passenden Port installieren (frag' bitte jetzt nicht, welchen) - ob das jetzt immer noch so ist, weiß ich allerdings nicht; dafür bin ich leider(!) schon zu lange von FreeBSD weg. Dann bräuchtest Du nicht cross-zu-compilieren.
Die andere Möglichkeit wäre, Lazarus/Free Pascal auch auf FreeBSD zu installieren (wenn es einen aktuellen Port dazu gibt). Dann den - auf Linux entwickelten - Pascal-Code auf dem Server neu compilieren. Dann sollte das Binary-Format zum System passen.
Ciao,
Photor
aus meiner früheren Zeit mit FreeBSD (4 bis 7) meine ich mich erinnern zu könne, dass FreeBSD die Möglichkeit hatte, Linux-Binaries direkt auszuführen. Man musste nur den passenden Port installieren (frag' bitte jetzt nicht, welchen) - ob das jetzt immer noch so ist, weiß ich allerdings nicht; dafür bin ich leider(!) schon zu lange von FreeBSD weg. Dann bräuchtest Du nicht cross-zu-compilieren.
Die andere Möglichkeit wäre, Lazarus/Free Pascal auch auf FreeBSD zu installieren (wenn es einen aktuellen Port dazu gibt). Dann den - auf Linux entwickelten - Pascal-Code auf dem Server neu compilieren. Dann sollte das Binary-Format zum System passen.
Ciao,
Photor
Re: Crosscompiling von Linux nach FreeBSD
Hallo und vielen Dank,
für eure Hinweise.
Ich habe mal das /proc Verzeichnis durchgeblättert und dort bin ich zumindest schon mal auf diesen Hinweis gestoßen: FreeBSD ELF64. Welche Prozessoren verbaut sind kann ich im Moment nicht beantworten.
Außerdem habe ich gerade "Hallo Welt" in der 64Bit Version probiert, mit dem gleichen Ergebnis.
VG
LinWald
für eure Hinweise.
Ich habe mal das /proc Verzeichnis durchgeblättert und dort bin ich zumindest schon mal auf diesen Hinweis gestoßen: FreeBSD ELF64. Welche Prozessoren verbaut sind kann ich im Moment nicht beantworten.
Außerdem habe ich gerade "Hallo Welt" in der 64Bit Version probiert, mit dem gleichen Ergebnis.
VG
LinWald
- photor
- Beiträge: 445
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
- CPU-Target: 64Bit
Re: Crosscompiling von Linux nach FreeBSD
Hallo BerLin,
Ich zitiere mich mal selbst (Pfui):
Im FreeBSd-Handbuch gibt es ein Kapitel dazu: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html. Und funktioniert hat das recht gut; ich hatte Mathematica(TM) damit laufen.
Schau Dir mal folgendes auf dem Linux- und dem FreeBSD-System an:
Dabei sollte es egal sein, welches Binary/Executable du nimmst. Ich habe hier mal eines genommen, dass von Lazarus erzeugt wurde. Ich kann das leider nicht mehr für ein unter FreeBSD erstelltes Binary machen, da ich keines mehr besitze, aber ich schätze, dass mindestens bei der library /lib64/ld-linux-x86-64.so.2 irgendwas mit "bsd" steht. Darum brauchst Du die Zwischenschicht (aber das wird im FreeBSD-Handbook bestimmt besser beschrieben).
Nachtrag: hab' noch folgendes gefunden (deutsch-sprachig und nicht nur 32-bittig): https://www.freebsd.org/doc/de/books/handbook/book.html#linuxemu. Aber zugegebenermaßen ist meine Erfahrung mit FreeBSD schon einige Zeit her; da war noch nix mit 64-Bit. Kann also durchaus jetzt anders laufen.
Ciao,
Photor
Ich zitiere mich mal selbst (Pfui):
photor hat geschrieben:aus meiner früheren Zeit mit FreeBSD (4 bis 7) meine ich mich erinnern zu können, dass FreeBSD die Möglichkeit hatte, Linux-Binaries direkt auszuführen.
Im FreeBSd-Handbuch gibt es ein Kapitel dazu: https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html. Und funktioniert hat das recht gut; ich hatte Mathematica(TM) damit laufen.
Schau Dir mal folgendes auf dem Linux- und dem FreeBSD-System an:
Code: Alles auswählen
[photor@Picard ~]$ file Lazarus/RoadLoad/roadload
Lazarus/RoadLoad/roadload: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.4.0, not stripped
Dabei sollte es egal sein, welches Binary/Executable du nimmst. Ich habe hier mal eines genommen, dass von Lazarus erzeugt wurde. Ich kann das leider nicht mehr für ein unter FreeBSD erstelltes Binary machen, da ich keines mehr besitze, aber ich schätze, dass mindestens bei der library /lib64/ld-linux-x86-64.so.2 irgendwas mit "bsd" steht. Darum brauchst Du die Zwischenschicht (aber das wird im FreeBSD-Handbook bestimmt besser beschrieben).
Nachtrag: hab' noch folgendes gefunden (deutsch-sprachig und nicht nur 32-bittig): https://www.freebsd.org/doc/de/books/handbook/book.html#linuxemu. Aber zugegebenermaßen ist meine Erfahrung mit FreeBSD schon einige Zeit her; da war noch nix mit 64-Bit. Kann also durchaus jetzt anders laufen.
Ciao,
Photor
Zuletzt geändert von photor am Mo 15. Feb 2016, 20:34, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6214
- 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: Crosscompiling von Linux nach FreeBSD
Kannst du dort einmal
ausführen ? Nur damit man sieht mit was für einen System man da zu tun hat. Geht natürlich nur, wenn readelf verfügbar ist.
Man kann dann nachher auch das Lazarusprogramm damit abfragen, dann hat man den Unterschied. Siehe auch viewtopic.php?f=4&t=6645 dazu, dort ging es allerdings um ARM. Aber um die Umgebung mal abzutesten mit was man es zu tun hat, ist es nicht schlecht.
Andreas
Code: Alles auswählen
readelf -a /bin/irgendeinprogramm
ausführen ? Nur damit man sieht mit was für einen System man da zu tun hat. Geht natürlich nur, wenn readelf verfügbar ist.
Man kann dann nachher auch das Lazarusprogramm damit abfragen, dann hat man den Unterschied. Siehe auch viewtopic.php?f=4&t=6645 dazu, dort ging es allerdings um ARM. Aber um die Umgebung mal abzutesten mit was man es zu tun hat, ist es nicht schlecht.
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1100
- Registriert: Di 5. Aug 2008, 09:37
- OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
- CPU-Target: 32/64,PPC(+64), ARM
- Wohnort: Eindhoven (Niederlande)
Re: Crosscompiling von Linux nach FreeBSD
Wenn es wirklich ein FreeBSD crossbuild ist, aber mit Linux linker gemacht, kann man mit
brandelf -T freebsd <file>
das zu korrigieren. Klappt aber nur fuer einfache Programme.
brandelf -T freebsd <file>
das zu korrigieren. Klappt aber nur fuer einfache Programme.
Re: Crosscompiling von Linux nach FreeBSD
Hallo und vielen Dank,
ich habe meine "Hallo Welt" auf dem Server zur funktion gebracht.
Auf dem Server ist die Linuxkompatibiltätsschicht installiert worden.
Anschließend mussten noch die ELF-binaries angepasst werden.
brandelf...
Viele Grüße
Bernhard
ich habe meine "Hallo Welt" auf dem Server zur funktion gebracht.
Auf dem Server ist die Linuxkompatibiltätsschicht installiert worden.
Anschließend mussten noch die ELF-binaries angepasst werden.
brandelf...
Viele Grüße
Bernhard