我有应用程序 test.c,通过在主机(在 ubuntu 上)机器上使用 gcc,我成功编译并在主机上成功运行了应用程序。
现在我想使用arm交叉编译器交叉编译相同的应用程序LPC1788
。请指导我如何链接 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
导致这些错误的原因以及如何克服
在针对不同的体系结构进行编译时,您无法使用主机库。首先,您需要为目标机器(即 ARM)交叉编译所有非标准库(libxml、libopenssl)。
基本上,您需要下载这些库的源代码并使用
--host=arm-uclinuxeabi --prefix=SOME_HOST_DIR
(或类似的东西 - 你可以检查自述文件)
假设您的交叉编译器位于 PATH 中。
这些库可能还需要交叉编译更多库。
编译应用程序时,您应该使用这些交叉编译的库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)