Crosscompiling von Linux nach FreeBSD

Antworten
BerLin
Beiträge: 50
Registriert: So 17. Jun 2007, 16:51

Crosscompiling von Linux nach FreeBSD

Beitrag von BerLin »

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

Mathias
Beiträge: 6160
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

Beitrag von Mathias »

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

Benutzeravatar
photor
Beiträge: 443
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

Beitrag von photor »

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

BerLin
Beiträge: 50
Registriert: So 17. Jun 2007, 16:51

Re: Crosscompiling von Linux nach FreeBSD

Beitrag von BerLin »

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

Benutzeravatar
photor
Beiträge: 443
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

Beitrag von photor »

Hallo BerLin,

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.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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

Beitrag von af0815 »

Kannst du dort einmal

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).

marcov
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

Beitrag von marcov »

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.

BerLin
Beiträge: 50
Registriert: So 17. Jun 2007, 16:51

Re: Crosscompiling von Linux nach FreeBSD

Beitrag von BerLin »

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

Antworten