交叉编译 "OpenSSL"错误

标签 c linux openssl cross-compiling

我在我的 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++ 编译器。我还安装了两个交叉编译器工具链,一个支持硬 float (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-gnueabihf)进行编译。

希望这对您有所帮助。

关于交叉编译 "OpenSSL"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181372/

相关文章:

linux - 通过文件进行进程间通信

php - 如何使用公共(public) RSA key 验证 JSON Web token ?

c - 为什么这个程序最后总是显示U

linux - 如何使用 bash 脚本显示 "setup" screen

linux - 无法连接到containerd : failed to dial

ssl - openssl DTLS 1.0.2k 是否接受碎片输入并重新组装碎片数据包?

c - 试图修复有关 ‘const’ 限定符的警告

c - 编译 gSOAP 客户端时 undefined reference

c - 列出目录并显示每个文件的详细信息。使用 c 的所有者、八进制权限和文件名

c - 添加两个宏并在预处理阶段转换为字符串