Crosscompiling von Linux nach FreeBSD

Crosscompiling von Linux nach FreeBSD

Beitragvon BerLin » 12. Feb 2016, 15:18 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
BerLin
 
Beiträge: 43
Registriert: 17. Jun 2007, 15:51

Beitragvon Mathias » 12. Feb 2016, 17:49 Re: Crosscompiling von Linux nach FreeBSD

Root Managed Server

Was ist dort für eine CPU verbaut ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4250
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon photor » 12. Feb 2016, 18:49 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
photor
 
Beiträge: 149
Registriert: 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon BerLin » 13. Feb 2016, 08:12 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
BerLin
 
Beiträge: 43
Registriert: 17. Jun 2007, 15:51

Beitragvon photor » 15. Feb 2016, 20:13 Re: Crosscompiling von Linux nach FreeBSD

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 15. Feb 2016, 20:34, insgesamt 1-mal geändert.
photor
 
Beiträge: 149
Registriert: 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 64Bit
Nach oben

Beitragvon af0815 » 15. Feb 2016, 20:33 Re: Crosscompiling von Linux nach FreeBSD

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).
af0815
 
Beiträge: 3455
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon marcov » 16. Feb 2016, 09:09 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.
marcov
 
Beiträge: 1031
Registriert: 5. Aug 2008, 08:37
Wohnort: Eindhoven (Niederlande)
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk) | 
CPU-Target: 32/64,PPC(+64), ARM
Nach oben

Beitragvon BerLin » 20. Feb 2016, 08:27 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
BerLin
 
Beiträge: 43
Registriert: 17. Jun 2007, 15:51

• Themenende •

Zurück zu Linux



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried