将 OpenSSL-1.0.1e 向后移植到 Debian Lenny (armv4l)

sve*_*ven 5 linux compiling arm cross-compilation openssl

我有一个仅支持 Debian Lenny 的旧嵌入式板。我需要在上面安装OpenSSL-1.0.1e。如果我下载源代码然后尝试编译源代码,我会收到这个错误

ts7500:/home/openssl-1.0.1e# make
making all in crypto...
make[1]: Entering directory `/home/openssl-1.0.1e/crypto'
gcc -I. -I.. -I../include  -fPIC -DOPENSSL_PIC -DZLIB_SHARED -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DTERMIO -O3 -Wall -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DGHASH_ASM   -c -o armcap.o armcap.c
In file included from armcap.c:8:
arm_arch.h:35:5: error: #error "unsupported ARM architecture"
make[1]: *** [armcap.o] Error 1
make[1]: Leaving directory `/home/openssl-1.0.1e/crypto'
make: *** [build_crypto] Error 1
Run Code Online (Sandbox Code Playgroud)

我怎样才能克服这个错误?

Note: ts7500:/home/openssl-1.0.1e# `uname -a`
Linux ts7500 3.4.0 #83 Sun May 26 17:07:14 CEST 2013 `armv4l GNU/Linux`
Run Code Online (Sandbox Code Playgroud)

ARMV4 定义在https://github.com/joyent/node/blob/89dcf22/deps/openssl/openssl/crypto/arm_arch.h

编辑:如果我#define __ARM_ARCH__ 4在库的开头添加,它会抑制问题并编译代码没有任何问题。我想知道我所做的有多正确。我希望有更好的解决方案(例如,不修改库)

Gil*_*il' 2

您尚未将正确的选项传递给Configure. 确保传递参数linux-armv4。如果要进行交叉编译,除了 之外armv4,您还需要传递交叉编译器的路径,以及包含和库路径(如果需要)。

./Configure --cross-compiler-prefix=/opt/gcc-arm/bin/arm-linux-gnueabi- -I/opt/gcc-arm/include -L/opt/gcc-arm/lib
Run Code Online (Sandbox Code Playgroud)