Nutzt jemand hier Cross Compiler?

Alexco

Well-Known Member
Moin und frohes Neues!

Ich beschäftige mich so zwischendurch immer mal wieder mit dem Thema Cross-Compile. Dabei gehen die meisten Infos, die ich finde, immer von Linux irgendwas auf Linux-Raspi mit GNU aus, was mir so nicht hilft.
Ausgangspunkt ist ein kleines (leider closed source) Tool, das mittels Cmake gebaut wird. Das läuft unter allem möglichen (Linux, BSD, macOS,...) und hat als einzige Abhängigkeit nur die libusb-1. Aktuell starte ich auf meinem Laptop (macOS) jedes Mal eine Qemu-VM für BSD, Linux x86_64, Linux ARM, usw. und übersetze das dann nativ. Aber gerade die x86_64 Emulation ist da sehr langsam auf dem M1 und ich muss ja die Systeme in den VMs auch pflegen (4 VMs + 2 weitere Linux Test-VMs).
Jetzt dachte ich, ich baue mir eine FreeBSD/Linux ARM VM und baue das Tool dort drin auch für X86_64 mittels LLVM/clang, dann spare ich mir die ganzen GCC/GNU Dinger unter Linux und vor allem ein paar VMs. Scheint aber nicht so einfach zu sein. Ich scheitere eigentlich schon am einfachsten, nämlich die includes und libs des x86_64 Targets (sysroot) zu bekommen und diese dem clang per Cmake toolchain File mitzugeben.

Hat das schon mal jemand gemacht? Oder eine Idee?
 
"cross compiling" heisst fuer mich nur, dass nach dem linken ein binary rausfaellt, welches nicht auf der Maschine laeuft, auf der du compiliert hast.

Um die includes und libraries zu finden gibt es die parameter -I und -L.


Mein Tipp: cmake macht auch nichts anderes als ein Shellscript, wenn es compiliert. Nur eetwas bunter.

Vielleicht probierst du mal die ganzen Befehle, die da durchrauschen zu sehen und auf dem Hostsystem deiner Wahl laufen zu lassen?

Einen nach dem anderen?
 
Ja, soweit bin ich mit Dir einer Meinung :-)
Und ja, das funktioniert auch, wenn ich die passenden Libs für mein Target bereits irgendwo habe. Meine eventuell auch zu naive Idee ist, dass ich mir die Abhängigkeiten für mein Target per Paketmanagement installieren kann...
 
Wie ist es mit dem FreeBSD qemu-user-static Port? Ich kann Dir nicht sagen, was da der Unterschied zu einer richtigen VM auf QEMU Basis ist, aber eine richtige VM wird da nicht hochgefahren.
Ich baue damit, allerdings auf amd64, einige Ports für armv6, sowie armv7 und habe es früher auch für sparc64 benutzt.
 
Interessant. Und wie sieht das aus? Du nimmst qemu-user-static und startest damit dann was? Den Compiler? Oder make?
Hast Du da mal ein Beispiel?
 
Zurück
Oben