2015-02-10 96 views
0

我想使用ndk構建android的openSSL。我正在使用dockerFile的概念。我已經根據http://wiki.openssl.org/index.php/Android中的建議設置了幾個環境變量。現在我收到以下錯誤:使用ndk構建android的OpenSSL時出錯使用ndk

make[2]: Entering directory `/Android/openssl/apps' 
(:; LIBDEPS="${LIBDEPS:--L.. -lssl -L.. -lcrypto -ldl}"; LDCMD="${LDCMD:-arm-l 
inux-androideabi-gcc}"; LDFLAGS="${LDFLAGS:--DOPENSSL_THREADS -D_REENTRANT -DDSO 
_DLFCN -DHAVE_DLFCN_H --static -Wa,--noexecstack -march=armv7-a -mandroid -I/And 
roid/android-ndk-r10c/platforms/android-19/arch-arm/usr/include -B/Android/andro 
id-ndk-r10c/platforms/android-19/arch-arm/usr/lib -O3 -fomit-frame-pointer -Wall 
-DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_AS 
M -DAES_ASM -DBSAES_ASM -DGHASH_ASM}"; LIBPATH=`for x in $LIBDEPS; do echo $x; d 
one | sed -e 's/^ *-L//;t' -e d | uniq`; LIBPATH=`echo $LIBPATH | sed -e 's/ /:/ 
g'`; LD_LIBRARY_PATH=$LIBPATH:$LD_LIBRARY_PATH ${LDCMD} ${LDFLAGS} -o ${APPNAME: 
=openssl} openssl.o verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd 
.o gendh.o errstr.o ca.o pkcs7.o crl2p7.o crl.o rsa.o rsautl.o dsa.o dsaparam.o 
ec.o ecparam.o x509.o genrsa.o gendsa.o genpkey.o s_server.o s_client.o speed.o 
s_time.o apps.o s_cb.o s_socket.o app_rand.o version.o sess_id.o ciphers.o nseq. 
o pkcs12.o pkcs8.o pkey.o pkeyparam.o pkeyutl.o spkac.o smime.o cms.o rand.o eng 
ine.o ocsp.o prime.o ts.o srp.o ${LIBDEPS}) 
/Android/toolchain-arm/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: error: cannot find -ldl 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_globallookup: error: unde 
fined reference to 'dlopen' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_globallookup: error: unde 
fined reference to 'dlsym' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_globallookup: error: unde 
fined reference to 'dlclose' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_bind_func: error: undefin 
ed reference to 'dlsym' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_bind_func: error: undefin 
ed reference to 'dlerror' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_bind_var: error: undefine 
d reference to 'dlsym' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_bind_var: error: undefine 
d reference to 'dlerror' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_load: error: undefined re 
ference to 'dlopen' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_load: error: undefined re 
ference to 'dlclose' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_load: error: undefined re 
ference to 'dlerror' 
../libcrypto.a(dso_dlfcn.o):dso_dlfcn.c:function dlfcn_unload: error: undefined 
reference to 'dlclose' 
collect2: error: ld returned 1 exit status 
make[2]: Leaving directory `/Android/openssl/apps' 
make[2]: *** [link_app.] Error 1 
make[1]: *** [openssl] Error 2 
make[1]: Leaving directory `/Android/openssl/apps' 
make: *** [build_apps] Error 1 
INFO[0135] The command [/bin/sh -c cd openssl && ./config --static no-ssl2 no-ss 
l3 no-comp no-hw no-engine && make depend && make &&   ls -hs . && cp l 
ibssl.a /Android/output] returned a non-zero code: 2 
[email protected]:/home/curl_ssl$ 

您是否有解決上述錯誤的建議?我無法找到這種錯誤背後的原因。

回答

0

Android已經openssl。也許你不需要編譯它們。試試這個問題的答案Compiling OpenSSL on Android

+1

addinLOCAL_LDLIBS:= -lssl -lcrypto inandroid.mk給出錯誤C:/Users/ppanchal/AppData/Local/Android/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/windows- x86_64/bin /../ lib/gcc/arm-linux-androideabi/4.8 /../../../../ arm-linux-androideabi/bin/ld.exe:error:找不到-lssl C:/Users/ppanchal/AppData/Local/Android/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin /../ LIB/GCC /臂-Linux的androideabi/4.8/.. /../../../arm-linux-androideabi/bin/ld.exe:error:can not find -lcrypto – Premal 2015-02-11 04:33:55

+0

哦,windows ...嘗試從鏈接中描述的仿真器複製libssl *和libcrypto * 。將它們複製到您正在使用的正確平臺版本(我看到您的平臺是android-19)。 – 2015-02-11 07:40:50

+0

我已經做到了。事實上,我在所有平臺上覆制,但仍然沒有運氣。我需要構建openSSL,因爲我需要使用curl。但是目前我無法構建openSSL,而我卻能夠在沒有SSL支持的情況下構建curl。我很感激,如果有人可以幫助我使用dockerFile構建openSSL。其他選項也是受歡迎的。 – Premal 2015-02-11 08:58:25