首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交叉编译"OpenSSL“错误

交叉编译"OpenSSL“错误
EN

Stack Overflow用户
提问于 2013-11-25 05:41:00
回答 4查看 13K关注 0票数 10

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

代码语言:javascript
复制
/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库?

我是从交叉编译开始的,我对此了解不多。耽误您时间,实在对不起!

EN

回答 4

Stack Overflow用户

发布于 2015-02-17 09:20:00

我知道这个问题有点老了,但既然我是带着同样的问题来讨论这个问题的,我就把这个问题留下来供将来参考。

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

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

代码语言:javascript
复制
sudo apt-get install {gcc,g++}-arm-linux-gnueabi{,hf}

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

代码语言:javascript
复制
git clone https://github.com/openssl/openssl
git checkout OpenSSL_1_0_2       # or another version

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

代码语言:javascript
复制
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-gnueabihf)进行编译。

希望这能有所帮助。

票数 14
EN

Stack Overflow用户

发布于 2018-04-03 21:29:26

在我的例子中,完全相同的错误消息(但我在64位机器上以32位编译)。我通过安装另一个架构解决了这个问题:

代码语言:javascript
复制
apt-get install libssl-dev:i386
票数 2
EN

Stack Overflow用户

发布于 2013-11-25 11:51:05

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

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

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

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

在这种情况下,编译器不知何故无法定位头文件。因此,请确保提供了包含路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20181372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档