Linux
將 OpenSSL-1.0.1e 向後移植到 Debian Lenny (armv4l)
我有一個只支持 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
在庫的開頭添加,它會抑制問題並編譯程式碼沒有任何問題。我想知道我做的有多正確。我希望有更好的解決方案(例如,不修改庫)
您沒有將正確的選項傳遞給
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