Android 使用 openssl 构建 PJSIP

标签 android openssl pjsip

我正在尝试在支持 SSL/TLS 的 Android 上构建 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)

后面有很多 undefined reference 。

因此 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 或在哪里应用它们。

有什么想法吗?

最佳答案

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

第一次下载openssl-android并通过阅读自述文件进行编译。 (将你的 android-ndk 放到 PATH 并在 openssl-android root 中执行命令 ndk-build)然后就可以了将 libcrypto.solibssl.solibs/armeabi/ 文件夹复制到 lib/ 根目录下的文件夹 openssl-android(你可以创建这个文件夹)。你的目录结构现在应该是这样的:
openssl-android/
->应用程序
->加密
->包含
->jni
->库
->库
->...

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

为了确认包含 openssl,只需将此命令通过管道传递给 grep,例如:
./configure-android --with-ssl=/home/你的用户名/path-to-openssl-android-dir | grep -wi ssl

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

希望这对您有所帮助。

关于Android 使用 openssl 构建 PJSIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632796/

相关文章:

android - Fragment 激活/可见时的回调

openssl - 如何阅读 openssl 警报消息?

php - 如何在 openssl_pkey_new 中指定密码加密强度?

c - 使用 CMake 将共享库与静态链接起来

ios - 如何为 PJSUA 应用程序运行单独创建日志文件?

android - 缓存在 Android Paging 3 中不起作用

android - 在 layout/main.xml 主布局文件中的 TextView 中设置 textColor 不引用 colors.xml 文件。 (它想要一个#RRGGBB 而不是@color/text_color)

java - Android - PHP - 包含所有语言字母的正则表达式

使用键值计算键检查值

c++ - 在 Windows 视频支持下使用 PJSIP