得到致命错误:找不到'features.h'文件#include <features.h>,同时尝试为pjsip android生成.so文件

时间:2018-05-17 08:19:27

标签: android pjsip csip-simple

我在我的Android应用程序中使用CSipSimple库进行VoIP呼叫功能,最近我的应用程序在Play商店被拒绝,因为带有这些库的OpenSSL版本已经过时了。我需要根据新的/支持的OpenSSL版本更新.so PJSIP文件。

我正在尝试为armeabi-v7,armeabi-v8a,armeabix86和armeabi生成基于OpenSSL(版本:openssl-1.1.1-pre6)的.so文件。我使用这些作为参考: 1. https://medium.com/@shehrazjazib/pjsip-build-for-android-with-integration-of-g729-codec-7d677ea68373 2. https://trac.pjsip.org/repos/wiki/Getting-Started/Android#OpenSSLSupport

我能够生成工具链并运行configure-android脚本。也能够成功执行make dep。但是我在执行 make 时遇到错误:

In file included from ../src/pjmedia-codec/openh264.cpp:19:
In file included from ../include/pjmedia-codec/openh264.h:22:
In file included from ../include/pjmedia-codec/types.h:28:
In file included from ../include/pjmedia-codec/config.h:35:
In file included from ../include/pjmedia/types.h:28:
In file included from ../include/pjmedia/config.h:27:
In file included from ../../pjlib/include/pj/config.h:313:
In file included from ../../pjlib/include/pj/compat/size_t.h:28:
In file included from /mnt/e/AndroidNDK/android-ndk-r17-linux-x86_64/android-ndk-r17/sources/cxx-stl/llvm-libc++/include/stddef.h:40:
/mnt/e/AndroidNDK/android-ndk-r17-linux-x86_64/android-ndk-r17/sources/cxx-stl/llvm-libc++/include/__config:169:10: fatal error:
      'features.h' file not found
#include <features.h>
         ^~~~~~~~~~~~
1 error generated.
/mnt/e/PJSIP/pjproject-2.7.2/build/rules.mak:173: recipe for target 'output/pjmedia-codec-arm-unknown-linux-androideabi/openh264.o' failed
make[2]: *** [output/pjmedia-codec-arm-unknown-linux-androideabi/openh264.o] Error 1
make[2]: Leaving directory '/mnt/e/PJSIPOpenSSL/pjproject-2.7.2/pjmedia/build'
Makefile:220: recipe for target 'libpjmedia-codec-arm-unknown-linux-androideabi.a' failed
make[1]: *** [libpjmedia-codec-arm-unknown-linux-androideabi.a] Error 2
make[1]: Leaving directory '/mnt/e/PJSIPOpenSSL/pjproject-2.7.2/pjmedia/build'
Makefile:14: recipe for target 'all' failed
make: *** [all] Error 1

我是原生android的新手,所以我对它知之甚少。我可以从/ usr / include文件夹中插入features.h,但这会导致其他缺少的头文件出错。

任何人都可以帮我解决这个错误吗?我需要能够为PJSIP android生成.so文件。

请注意:我在Windows 10操作系统上使用Ubuntu bash。

修改

我现在正尝试在虚拟盒中使用ubuntu OS,并且在尝试使用OpenSSL生成PjSip文件时,我收到此链接器错误:

make depend && make _all
make[1]: Entering directory `/home/rspl/Downloads/openssl-1.1.0h'
make[1]: Leaving directory `/home/rspl/Downloads/openssl-1.1.0h'
make[1]: Entering directory `/home/rspl/Downloads/openssl-1.1.0h'
CC="/home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm" /usr/bin/perl crypto/aes/asm/aes-armv4.pl void crypto/aes/aes-armv4.S
( trap "rm -f crypto/aes/aes-armv4.o.*" INT 0; \
      /home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -E  -I. -Icrypto/include -Iinclude -Icrypto -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wall -O3 -pthread -mandroid -fPIC --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -Wa,--noexecstack  -fPIC -DOPENSSL_USE_NODELETE crypto/aes/aes-armv4.S | \
      /usr/bin/perl -ne '/^#(line)?\s*[0-9]+/ or print' > crypto/aes/aes-armv4.o.s && \
      /home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wall -O3 -pthread -mandroid -fPIC --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -Wa,--noexecstack  -fPIC -DOPENSSL_USE_NODELETE -c -o crypto/aes/aes-armv4.o crypto/aes/aes-armv4.o.s )
/home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm  -I. -Icrypto/include -Iinclude -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wall -O3 -pthread -mandroid -fPIC --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -Wa,--noexecstack  -fPIC -DOPENSSL_USE_NODELETE -MMD -MF crypto/aes/aes_cbc.d.tmp -MT crypto/aes/aes_cbc.o -c -o crypto/aes/aes_cbc.o crypto/aes/aes_cbc.c
/home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm  -I. -Icrypto/include -Iinclude -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wall -O3 -pthread -mandroid -fPIC --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -Wa,--noexecstack  -fPIC -DOPENSSL_USE_NODELETE -MMD -MF crypto/aes/aes_cfb.d.tmp -MT crypto/aes/aes_cfb.o -c -o crypto/aes/aes_cfb.o crypto/aes/aes_cfb.c
/home/rspl/Downloads/android-ndk-r17/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -Iusr/include --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm  -I. -Icrypto/include -Iinclude -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPOLY1305_ASM -DOPENSSLDIR="\"/usr/local/ssl\"" -DENGINESDIR="\"/usr/local/lib/engines-1.1\"" -Wall -O3 -pthread -mandroid -fPIC --sysroot=/home/rspl/Downloads/android-ndk-r17/platforms/android-27/arch-arm -Wa,--noexecstack  -fPIC -DOPENSSL_USE_NODELETE -MMD -MF crypto/aes/aes_ecb.d.tmp -MT crypto/aes/aes_ecb.o -c -o crypto/aes/aes_ecb.o crypto/aes/aes_ecb.c
crypto/aes/aes_ecb.c:10:20: fatal error: assert.h: No such file or directory
 #include <assert.h>
                    ^
compilation terminated.
make[1]: *** [crypto/aes/aes_ecb.o] Error 1
make[1]: Leaving directory `/home/rspl/Downloads/openssl-1.1.0h'
make: *** [all] Error 2

由于gcc无法在crypto / include中找到头文件,因此我在CFLAGS中明确添加了-Iusr / include以获得相同的错误。

1 个答案:

答案 0 :(得分:0)

因为在高级版本上已经弃用或删除了NDK中的某些方法/文件。

尝试添加: 在配置注释的开头,NDK_TOOLCHAIN_VERSION = clang或NDK_TOOLCHAIN_VERSION = 4.9。