Eclipse CDT - 链接libcrypto.so以进行交叉编译

时间:2016-03-30 12:52:57

标签: c++ eclipse openssl cross-compiling eclipse-cdt

我想交叉编译一个使用一些OpenSSL文件的C ++程序:

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

因为交叉编译器的路径(/opt/crosstool/arm-none-linux-gnueabi/include)与默认的/usr/include路径不同,所有的OpenSSL头文件都是,我必须通过右键单击项目来设置包含路径 - &GT;属性 - &gt; C / C ++一般 - &gt;路径和符号 - &gt;添加... - &gt; /usr/include包含头文件。

与libcrypto.so相同:

... C / C ++一般 - &gt;图书馆 - &gt;添加... crypto

... C / C ++一般 - &gt;图书馆路径 - &gt;添加... /usr/lib/i386-linux-gnu(在此文件夹中我找到了librypto.so)

构建项目时出现以下错误:

/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

似乎是一个链接错误,但我不知道为什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

好的,终于解决了这个问题。我不知道我必须配置OpenSSL才能使用它与ARM进行交叉编译。

只需启动终端并输入:

    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

现在您的主目录中有一个名为opensslArm的文件夹。在此文件夹中,您将找到所有头文件和库本身。因此,在Eclipse中,将includess和opensslArm / lib的opensslArm / include路径添加到Library路径。请在此处查看更多信息:Cross Compile OpenSSH for ARM