web-dev-qa-db-ja.com

OpenSSL-1.0.1eをDebianLenny(armv4l)にバックポートする

DebianLennyのみをサポートする古い組み込みボードがあります。 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を追加すると、問題が抑制され、問題なくコードがコンパイルされます。私がしたことはどれほど正しいのだろうか。より良い解決策をいただければ幸いです(たとえば、ライブラリを変更せずに)

5
sven

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