0

Ich benutze Buildroot (2017.02.5), um eine benutzerdefinierte Cross Compilation Toolchain zu erstellen. Ich habe zwei Buildroot-Konfigurationen. eine zum Erstellen der RFS und eine zum Erstellen einer Toolchain. Ich habe Dinge auf diese Weise konfiguriert, weil ich nicht möchte, dass die Toolchain neu aufgebaut wird, es sei denn, ich habe sie absichtlich neu erstellt - die Konfiguration, die RFS erstellt, verweist auf diese Toolchain als externe Toolchain.Buildroot toolchain mit openssl

Im Allgemeinen funktioniert die eingebaute Toolchain gut, aber ich habe einige vorhandene Anwendungen (Linux userspace), die #include<openssl/md5.h> sind. Wenn ich versuche, dies zu kompilieren, bekomme ich einen "<openssl/md5.h>: No such file or directory" Fehler, der erwartet wird, weil das Sysroot-Verzeichnis der generierten Toolchain kein openssl-Verzeichnis enthält.

Wie kann ich buildroot openssl in die Toolchain integrieren? Alle Suchanfragen, die ich gemacht habe, scheinen darauf hinzuweisen, openssl für mein eingebettetes Ziel zu kompilieren, was kein Problem ist. Das Problem ist, dass ich es in die Toolchain aufnehmen muss.

Ich habe Target-Pakete -> Libraries -> Crypto -> openssl auf y gesetzt, aber ich denke nicht, dass dies in diesem Szenario keinen Unterschied macht, da ich glaube, es bezieht sich nur auf die RFS (und die defconfig in Frage baut keine RFS, nur eine Toolchain).

Ich könnte OpenSSL außerhalb der Buildroot-Struktur kompilieren und es in das Sysroot-Verzeichnis installieren, aber das scheint nicht korrekt, da es Sysroot verschmutzen würde.

Ich bin sicher, ich vermisse etwas Einfaches hier - jede Hilfe wäre willkommen.

+0

Es ist da. Sie müssen Pakete in Form von Buildroot für Ihre benutzerdefinierte Software erstellen. – 0andriy

Antwort

0

Nach etwas weiterem Lesen der buildroot-Dokumentation (was sehr gut ist), dachte ich, dass Pakete, die unter Target packages ausgewählt sind, tatsächlich in die sysroot der Toolchain geschoben werden (oder zumindest sollen), was Sinn machen würde. Der Grund, warum dies nicht funktionierte, war, weil ich eine make toolchain im Gegensatz zu make all (oder nur eine einfache make) tat. Die Pakete wurden nicht mit ersterem gebaut, also waren sie nicht in der sysroot der Toolchain.

+0

In Buildroot 2017.08 können Sie auch "make sdk" erstellen, um alle Pakete zu erstellen und das Ergebnis auch verschiebbar zu machen. Sie müssen jedoch selbst sicherstellen, dass das openssl, das in Ihrem rootfs endet, genau das selbe wie das in Ihrem SDK ist. – Arnout