Получение фатальной ошибки: файл 'features.h' не найден #include <features.h> при попытке создать файлы .so для pjsip android - PullRequest
0 голосов
/ 17 мая 2018

Я использую библиотеку CSipSimple для функции вызова VoIP в моем приложении для Android, и недавно мое приложение было отклонено в магазине воспроизведения, поскольку версия OpenSSL с этими библиотеками была устаревшей.Мне нужно обновить файлы .so PJSIP в соответствии с новой / поддерживаемой версией OpenSSL.

Я пытаюсь сгенерировать .so файлы на основе OpenSSL (версия: openssl-1.1.1-pre6) для armeabi-v7, armeabi-v8a, armeabix86 и armeabi.Я использую их как ссылки: 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, поэтому знаю об этом очень мало.Я могу вставить файл functions.h из папки / usr / include, но он, в свою очередь, получает ошибку для других отсутствующих заголовочных файлов.

Может кто-нибудь помочь мне с этой ошибкой?Мне нужно иметь возможность создавать .so файлы для PJSIP android.

Обратите внимание: я использую Ubuntu Bash на моей ОС Windows 10.

РЕДАКТИРОВАТЬ

Я сейчас пытаюсь работать с ОС Ubuntu в виртуальной коробке, и при попытке создания файлов PjSip с использованием OpenSSL я получаю эту ошибку компоновщика:

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, я явно добавил -Iusr / include в CFLAGS для получения той же ошибки.

1 Ответ

0 голосов
/ 12 июня 2018

потому что некоторые методы / файлы устарели или удалены из NDK в версии высокого уровня.

попробуйте добавить: NDK_TOOLCHAIN_VERSION = clang или NDK_TOOLCHAIN_VERSION = 4.9 в начале комментария о настройке.

...