我想交叉编译一个使用一些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
似乎是一个链接错误,但我不知道为什么。谢谢你的帮助。
答案 0 :(得分:1)
只需启动终端并输入:
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