Android使用openssl构建PJSIP

时间:2013-05-19 08:36:31

标签: android openssl pjsip

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

我在this answer之后成功构建了OpenSSL(没有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'

但是libdl.so存在于ndk的目录中:

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

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

try using -rpath or -rpath-link

我无法理解-rpath或rpath-link是什么或在何处应用它们。

任何想法?

1 个答案:

答案 0 :(得分:2)

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

首先下载openssl-android并通过阅读ReadMe文件进行编译。 (将android-ndk置于PATH并在ndk-build root中执行openssl-android命令},然后从libcrypto.so复制libssl.solibs/armeabi/文件夹到lib/根目录中的openssl-android文件夹(您可以创建此文件夹)。您的目录结构现在应该是:
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。现在你可以继续正常了。

希望这会有所帮助。