我在我的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库?
我开始交叉编译,我对此并不了解 . 谢谢你的时间!
3 回答
我知道这个问题有点老了,但是既然我遇到了同样的问题,我将把它留在这里以供将来参考 .
我找到的解决方案是使用已安装的交叉编译器手动编译OpenSSL,然后手动将其安装到交叉编译库文件夹中 .
首先,我安装了交叉编译器(我使用的是Ubuntu 14.04) . 我安装了C编译器和C编译器 . 我还安装了两个交叉编译工具链,一个具有硬浮点支持(arm-linux-gnueabihf),另一个没有(arm-linux-gnueabi) . 创建了两个目录(如问题所述)
/usr/arm-linux-gnueabi
和/usr/arm-linux-gnueabihf
,其中应安装交叉编译的库 .其次,克隆了OpenSSL Git存储库并查看了我感兴趣的版本(1.0.2):
然后,我配置了交叉编译环境并更改了安装目录(前缀),并按照INSTALL文件中提供的说明构建了库(并强制使用特定的交叉编译工具链):
您可以重复该过程并使用两个工具链进行编译(
arm-linux-gnueabi
和arm-linux-gnueabihf
) .希望这可以帮助 .
在我的情况下,完全相同的错误消息(但我在64位机器上编译32位) . 我通过安装另一个架构解决了这个问
曾为特定平台构建的库将用于特定平台,并且只有在其二进制兼容时才能在其他平台上使用 .
对于交叉编译,您可能也需要不同平台的二进制文件 .
关于此错误,似乎您没有提到OpenSSL头文件的包含路径 .
没有库,您将收到链接器错误,而不是编译器错误 .
在这种情况下,编译器以某种方式无法找到头文件 . 因此,请确保提供包含路径 .