Kreuzkompilieren von "OpenSSL" -Fehler

9

Ich verwende das Include: & lt; openssl / md5.h & gt; in meinem c-code. Wenn ich es mit dem "gcc" -Compiler kompiliere, habe ich keine Fehler, aber wenn ich es mit dem Cross-Compiler "arm-linux-gnueabi-gcc" kompiliere, habe ich den folgenden Fehler:

%Vor%

Ich denke, dass dieser Fehler liegt, weil ich die openssl-Bibliotheken im Cross-Compiler-Ordner "/ usr / arm-linux-gnueabi-gcc" nicht habe.

Kann mir jemand sagen, ob das der Grund für den Fehler ist? Und wie kann ich die openssl-Bibliotheken für Cross-Compiler installieren?

Ich beginne mit dem Cross-Compiling, und ich habe nicht viel Wissen darüber. Danke für deine Zeit!

    
user2984715 24.11.2013, 21:40
quelle

3 Antworten

8

Ich weiß, dass diese Frage ein wenig alt ist, aber da ich mit dem gleichen Problem dazu gekommen bin, werde ich das hier für eine zukünftige Referenz hinterlassen.

Die Lösung, die ich gefunden habe, war, OpenSSL manuell mit dem installierten Cross-Compiler zu kompilieren und dann manuell in den Cross-Compilation-Library-Ordner zu installieren.

Zuerst habe ich den Cross-Compiler installiert (ich benutze Ubuntu 14.04). Ich habe sowohl den C-Compiler als auch den C ++ - Compiler installiert. Ich habe auch zwei Cross-Compiler-Toolchains installiert, einen mit Unterstützung für hartes Gleitkomma (arm-linux-gnueabihf) und einen ohne (arm-linux-gnueabi). Es werden zwei Verzeichnisse erstellt (wie in der Frage angegeben) /usr/arm-linux-gnueabi und /usr/arm-linux-gnueabihf , in denen die kompilierten Bibliotheken installiert werden sollen.

%Vor%

Zweitens klonte ich das OpenSSL Git Repository und checkte die Version aus, an der ich interessiert war (1.0.2):

%Vor%

Dann habe ich die Umgebung für die Cross-Kompilierung konfiguriert und das Installationsverzeichnis (das Präfix) geändert und die Bibliothek gemäß den Anweisungen in der INSTALL-Datei erstellt (und gezwungen, die spezifische Cross-Compilierungs-Toolchain zu verwenden):

%Vor%

Sie können den Vorgang wiederholen und mit beiden Toolchains ( arm-linux-gnueabi und arm-linux-gnueabihf ) kompilieren.

Hoffe, das hilft.

    
quelle
0

Bibliotheken, die einmal für eine bestimmte Plattform erstellt wurden, werden für eine bestimmte Plattform verwendet und können nur dann auf einer anderen Plattform verwendet werden, wenn ihre Binärdatei kompatibel ist.

Für die Cross-Compilierung könnten Sie auch Binaries für verschiedene Plattformen benötigen.

In Bezug auf diesen Fehler scheint es, dass Sie den Include-Pfad für OpenSSL-Header-Dateien nicht erwähnt haben.

Ohne Bibliotheken erhalten Sie Linker-Fehler, nicht Compiler-Fehler.

In diesem Fall kann der Compiler die Headerdateien nicht finden. Stellen Sie daher sicher, dass der Include-Pfad angegeben ist.

    
doptimusprime 25.11.2013 03:51
quelle
0

In meinem Fall, genau die gleiche Fehlermeldung (aber ich kompilierte in 32 Bits auf einer 64-Bit-Maschine). Ich habe das mit der Installation einer anderen Architektur gelöst:

%Vor%     
Sandburg 03.04.2018 13:29
quelle

Tags und Links