1

我有应用程序 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

是什么导致了这些错误以及如何克服

4

1 回答 1

0

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

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

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

(或类似的东西——你可能会检查 README 文件)假设你在 PATH 中有你的交叉编译器。

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

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

于 2014-07-10T08:21:17.900 回答