如何将openssl库与arm-cross编译器链接起来

时间:2014-07-10 07:57:45

标签: c gcc openssl pyopenssl armcc

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

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

我的Mkakefile与GCC

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

导致这些错误的原因以及如何过来

1 个答案:

答案 0 :(得分:0)

在编译不同的体系结构时,不能使用主机库。首先,您需要为目标计算机(即ARM)交叉编译所有非标准库(libxml,libopenssl)。

基本上,您需要下载这些库的源代码并使用

进行配置
--host=arm-uclinuxeabi --prefix=SOME_HOST_DIR

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

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

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