2016-03-30 17 views
1

Ich möchte ein C++ Programm überqueren kompilieren, die einige OpenSSL Dateien verwendet:Eclipse-CDT - Einen Link libcrypto.so für Kreuzkompilierung

#include <openssl/x509.h> 
#include <openssl/pem.h> 
#include <openssl/bio.h> 
#include <openssl/err.h> 

Da der Pfad des Cross-Compiler (/opt/crosstool/arm-none-linux-gnueabi/include) auf die anders ist Standard /usr/include Pfad, wo alle OpenSSL-Header-Dateien sind, musste ich den Include-Pfad mit der rechten Maustaste auf Projekt -> Eigenschaften -> C/C++ Allgemein -> Pfad und Symbole -> Hinzufügen ... ->/usr/include einfügen die Headerdateien.

Gleiche mit dem libcrypto.so:

... C/C++ Allgemein -> Bibliotheken -> Hinzufügen ... crypto

... C/C++ Allgemein -> Bibliothek Paths -> hinzufügen ... /usr/lib/i386-linux-gnu (in diesem Ordner ich die librypto.so gefunden)

Wenn mein Projekt Aufbau ich folgende Fehlermeldung erhalten:

/opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libcrypto.so when searching for -lcrypto 
    /opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: skipping incompatible /usr/lib/i386-linux-gnu/libcrypto.a when searching for -lcrypto 
    /opt/crosstool/arm-none-linux-gnueabi/bin/../lib/gcc/arm-none-linux-gnueabi/4.4.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lcrypto 

Scheint ein Verbindungsfehler zu sein, aber ich Ich weiß nicht warum. Danke für die Hilfe.

+0

Welche Version von OpenSSL verwenden Sie? Woher kommt das? '/ Opt/crosstool/arm-none-linux-gnueabi'? (Es ist OK, ich versuche, ein Testgerät einzurichten, um eine Antwort zu testen). – jww

+0

Ich benutze Version 1.0.1. Der Pfad ist der Pfad zu meinem Cross-Compiler, er war der Standardpfad nach der Installation meines Cross-Compilers. In diesem Pfad habe ich alle Ordner für meine eingebettete Hardware, einige zusätzliche Bibliotheken für die Hardware und auch Standardbibliotheken (und Header-Dateien), aber nicht die OpenSSL-Bibliotheken. Ich habe versucht, die libcrypto.so-Dateien in die Ordner des Cross-Compilers zu kopieren, aber immer noch den gleichen Fehler. – Snowman

Antwort

1

Okay, endlich das Problem gelöst. Ich wusste nicht, dass ich OpenSSL konfigurieren musste, um es mit ARM zu kompilieren.

Starten Sie einfach Ihr Terminal und Typ:

export cross=arm-none-linux-gnueabi- 
    cd openssl-1.0.1s 
    ./Configure dist --prefix=$HOME/opensslArm 
    make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" 
    make install 

Jetzt haben Sie einen Ordner opensslArm in Ihrem Home-Verzeichnis genannt. In diesem Ordner finden Sie alle Header-Dateien und die Bibliothek selbst. Fügen Sie also in Eclipse den Pfad zu opensslArm/include zu Ihren includes und opensslArm/lib zu Ihren Bibliothekspfaden hinzu. Suchen Sie hier nach weiteren Informationen: Cross Compile OpenSSH for ARM