【问题标题】:how to link the openssl library with the arm-cross compiler如何将 openssl 库与 arm-cross 编译器链接
【发布时间】:2014-07-10 07:57:44
【问题描述】:

我有应用程序 test.c,通过在主机(在 ubuntu)机器上使用 gcc,我成功编译并成功在主机上运行了应用程序。

现在我想用 arm-cross 编译器为 LPC1788 交叉编译相同的应用程序。请指导我如何链接 openssl 库文件

我使用 GCC 的 Mkakefile

CC  = gcc  

 CFLAGS = -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1
-DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -I/usr/include/xmlsec1
-I/usr/include/libxml2 -DXMLSEC_OPENSSL_097=1
-DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\"openssl\ -DUNIX_SOCKETS -D XML_SECURITY

 LDFLAGS = -lcrypto -I/usr/include/libxml2 -lxml2 -I/usr/include/xmlsec1 -lxmlsec1    

all:
   $(CC) src/test.c -o test $(CFLAGS) $(LDFLAGS)

通过更改编译器,我使用了以下 Makefile

CC = /home/amarayya/doc/tools/arm-2010q1/bin/arm-uclinuxeabi-gcc
CFLAGS = -D__XMLSEC_FUNCTION__=__FUNCTION__ -DXMLSEC_NO_XKMS=1
-DXMLSEC_NO_CRYPTO_DYNAMIC_LOADING=1 -I/usr/include/xmlsec1
-I/usr/include/libxml2 -DXMLSEC_OPENSSL_097=1
-DXMLSEC_CRYPTO_OPENSSL=1 -DXMLSEC_CRYPTO=\"openssl\ -DUNIX_SOCKETS -D XML_SECURITY

LDFLAGS = -lcrypto -L/usr/include/libxml2 -lxml2 -L/usr/include/xmlsec1 -lxmlsec1

all:
$(CC) src/test.c -o test $(CFLAGS) $(LDFLAGS)

导致这些错误的原因

fatal error: openssl/rsa.h: No such file or directory
fatal error: openssl/rsa.h: No such file or directory

导致这些错误的原因以及如何克服

【问题讨论】:

  • 你为arm交叉编译过openssl吗?
  • 也可以尝试添加CFLAGS = -isystem /usr/include/openssl
  • 结果相同 没有这样的文件或目录

标签: c gcc openssl pyopenssl armcc


【解决方案1】:

在针对不同架构进行编译时,您不能使用主机库。首先,您需要为您的目标机器(即 ARM)交叉编译所有非标准库(libxml、libopenssl)。

基本上,你需要下载这些库的源代码并配置它

--host=arm-uclinuxeabi --prefix=SOME_HOST_DIR

(或类似的东西 - 你可以检查自述文件) 假设您在 PATH 中有交叉编译器。

这些库可能还需要交叉编译更多库。

在编译您的应用程序时,您应该使用这些交叉编译的库。

【讨论】:

  • 我已经交叉编译了openssl并将这些libcrypto.a和libssl.a复制到交叉编译路径中,然后也导致了同样的错误。
  • 你有需要的头文件(rsa.h)吗?检查交叉编译的opencssl的安装目录。你需要将你的编译器指向这个目录——比如 -I SOME_HOST_DIR/usr/include
  • 我可以在路径 /usr/include/openssl/ 中找到这些 .h 文件
  • 使用这个链接购买我已经编译过 openssl embeddedcoaching.blogspot.in/2013/10/…
  • /usr/include 包含主机头文件,您需要使用交叉编译版本。检查 openssl 构建/安装目录。您提供的链接有点令人困惑-您不需要使用 sudo 进行交叉编译(您不想用交叉编译的版本覆盖主机库)。
猜你喜欢
  • 2021-03-08
  • 1970-01-01
  • 2017-05-15
  • 1970-01-01
  • 2018-02-09
  • 2021-02-26
  • 1970-01-01
  • 2020-05-13
  • 2011-12-11
相关资源
最近更新 更多