【问题标题】:Android build PJSIP with opensslAndroid 使用 openssl 构建 PJSIP
【发布时间】:2014-04-09 17:18:18
【问题描述】:

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

我按照this answer(没有fips,作为shared-.so 库)成功构建了OpenSSL,并将其安装在~/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 是什么或在哪里应用它们。

有什么想法吗?

【问题讨论】:

    标签: android openssl pjsip


    【解决方案1】:

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

    首先下载openssl-android并通过阅读ReadMe File进行编译。 (将您的android-ndk 放入PATH 并在openssl-android 根目录中执行命令ndk-build)然后只需将libs/armeabi/ 文件夹中的libcrypto.solibssl.so 复制到openssl-android 根目录中的lib/ 文件夹(您可以创建这个文件夹)。你的目录结构现在应该是:
    openssl-android/
    -&gt;apps
    -&gt;crypto
    -&gt;include
    -&gt;jni
    -&gt;lib
    -&gt;libs
    -&gt;...

    现在只需在 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。现在可以继续正常了。

    希望这会有所帮助。

    【讨论】:

    • 嗨,moonzai,我已经按照您的步骤和它在这里工作了。但是因为我需要在 API-9 或 API-11 等较低配置的设备上使用 SSL 构建 pjsip。所以请指导我如何做到这一点。真的对我有很大帮助。
    • 嗨@Johnsmith,很高兴听到它对您有所帮助。根据我的经验,它应该可以完美地在这些 API 级别上运行。如果您遇到错误,请告诉我。
    • 嗨@moonzai,目前我在grep命令上得到以下输出:使用SSL前缀.../backup/PjsipSetup/openssl-1.0.2s/检查openssl/ssl.h可用性...是的检查 openssl/ssl.h 是否存在... 是 检查 openssl/ssl.h... 是 ** 未找到 GnuTLS 库,禁用 SSL 支持 ** 这是否意味着 SSL 编译成功?如果是,那么 .so 文件的路径是什么?我试图检查示例应用程序,但没有得到任何与 openssl 相关的 .so 文件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2014-02-23
    • 2017-03-09
    相关资源
    最近更新 更多