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
이 오류를 어떻게 극복할 수 있나요?
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`
ARMV4는 다음에 정의되어 있습니다.https://github.com/joyent/node/blob/89dcf22/deps/openssl/openssl/crypto/arm_arch.h
편집: #define __ARM_ARCH__ 4
라이브러리 시작 부분에 추가하면 문제가 억제되고 문제 없이 코드가 컴파일됩니다. 나는 내가 어떤 일을 하는 것이 얼마나 옳은지 알고 싶습니다. 더 나은 솔루션을 원합니다(예: 라이브러리 수정 없음).
답변1
에 올바른 옵션을 전달하지 않았습니다 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