2013-05-19 76 views
4

我试图在Android上使用SSL/TLS支持构建PJSIP。Android使用openssl构建PJSIP

我成功构建了OpenSSL,后面this answer(没有fips,作为shared-.so库),并将其安装在〜/ android(创建〜/ android/ssl目录)中。

现在,当我这样做

./configure-android --with-ssl=/home/andrea/android/ssl 

,并期待在的config.log,第一个错误状态

<ndk-directories-and-stuff>/arm-linux-androideabi/bin/ld: warning: libdl.so, needed by /home/andrea/android/ssl/lib/libcrypto.so, not found (try using -rpath or -rpath-link) 

很多未定义的引用遵循。

至于后果SSL支持被禁用:

aconfigure:7012: result: ** OpenSSL libraries not found, disabling SSL support ** 
ac_cv_header_openssl_ssl_h=yes 
ac_cv_lib_ssl_SSL_library_init=no 
CFLAGS=' -I/home/andrea/android/android-ndk-r8e/platforms/android-14/arch-arm/usr/include -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1 -I/home/andrea/android/ssl/include' 
LDFLAGS=' -nostdlib -L/home/andrea/android/android-ndk-r8e/platforms/android-14/arch-arm/usr/lib/ -L/home/andrea/android/ssl/lib' 
ac_no_ssl='' 
libssl_present='' 
openssl_h_present='1' 

但在NDK的目录libdl.so存在:

<ndk-dir>/platforms/android-14/arch-arm/usr/lib/ 

我想我必须告诉LD在其他库, 什么ld的建议是什么意思?

try using -rpath or -rpath-link 

我不明白什么-rpath或rpath-link是或在哪里应用它们。

有什么想法?

回答

2

我用OpenSSL成功构建了PJSIP。请按照以下步骤操作:

首先下载openssl-android并通过阅读ReadMe文件进行编译。 (把你android-ndkPATHopenssl-android根用户身份执行命令ndk-build)则刚刚从libs/armeabi/文件夹中的openssl-android根复制libcrypto.solibssl.solib/文件夹(你可以创建该文件夹)。现在你的目录结构应该是这样的:
openssl-android/
->apps
->crypto
->include
->jni
->lib
->libs
->...

现在只是在执行PJSIP的根目录下:
./configure-android --with-ssl=/home/your-user-name/path-to-openssl-android-dir

确认OpenSSL是否包含只是管道此命令到grep,如:
./configure-android --with-ssl=/home/your-user-name/path-to-openssl-android-dir | grep -wi ssl

然后你会看到这条线result: OpenSSL library found, SSL support enabled。这意味着,现在为您的PJSIP启用了OpenSSL。现在你可以继续正常。

希望这有助于。

+0

嗨moonzai,我跟着你的脚步,在这里工作。但因为我需要在较低配置的设备(如API-9或API-11)上使用SSL构建pjsip。所以请指导我如何去做。真的会帮助我很多。 –

+0

hi @Johnsmith,很高兴听到它帮助你。根据我的经验,它应该完美地在这些API级别上工作。如果您面临错误,请告诉我。 – moonzai