交叉编译“OpenSSL”错误

我在我的c代码中使用include:<openssl / md5.h>。 当我用“gcc”编译器进行编译时,我没有任何错误,但是当我用交叉编译器“arm-linux-gnueabi-gcc”编译时,出现以下错误:

/usr/include/openssl/e_os2.h:56:33: fatal error: openssl/opensslconf.h: No such file or directory compilation terminated. 

我认为这个错误是因为我在交叉编译文件夹“/ usr / arm-linux-gnueabi-gcc”中没有openssl库。

任何人都可以说,如果这是错误的原因? 我怎样才能安装交叉编译器的openssl库?

我开始交叉编译,而且我对这方面的知识还不多。 谢谢你的时间!

我知道这个问题有点老,但是因为我遇到了同样的问题,所以我将把它留在这里供将来参考。

我找到的解决方案是用安装的交叉编译器手动编译OpenSSL,然后手动将其安装到交叉编译库文件夹。

首先,我安装了交叉编译器(我使用Ubuntu 14.04)。 我安装了C编译器和C ++编译器。 我还安装了两个交叉编译器工具链,一个带有硬浮点支持(arm-linux-gnueabihf),另一个没有(arm-linux-gnueabi)。 创建两个目录(如问题中提到的) /usr/arm-linux-gnueabi/usr/arm-linux-gnueabihf ,其中交叉编译的库应该被安装到。

 sudo apt-get install {gcc,g++}-arm-linux-gnueabi{,hf} 

其次,克隆了OpenSSL Git仓库,并签出了我感兴趣的版本(1.0.2):

 git clone https://github.com/openssl/openssl git checkout OpenSSL_1_0_2 # or another version 

然后,我配置了交叉编译环境,并更改了安装目录(前缀),并按照INSTALL文件中提供的说明构建了库(并强制使用特定的交叉编译工具链):

 export CROSS=arm-linux-gnueabi # or arm-linux-gnueabihf export AR=${CROSS}-ar export AS=${CROSS}-as export CC=${CROSS}-gcc export CXX=${CROSS}-g++ export LD=${CROSS}-ld ./Configure --prefix=/usr/${CROSS} os/compiler:${CC} make sudo make install 

你可以重复这个过程并用两个工具链( arm-linux-gnueabiarm-linux-gnueabihfarm-linux-gnueabihf

希望这可以帮助。

曾经为特定平台构建的库将用于特定的平台,只有在二进制兼容的情况下才能在其他平台上使用。

对于交叉编译,您也可能需要不同平台的二进制文件。

关于这个错误,似乎你还没有提到包含OpenSSL头文件的路径。

没有库,你会得到链接错误,而不是编译器错误。

在这种情况下,编译器不知何故无法找到头文件。 所以,确保提供包含路径。