Opus 1.3.1 ndk-build issue in making .so library
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 3.3k
- Forks
- 808
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
I have followed this tutorial in compiling and using opus with NDK.
https://medium.com/rahasak/opus-codec-for-android-voip-application-7cfe7cd3dd9b
Its working fine with the opus version he is using but when I follow the same procedure step by step for Opus 1.3.1 , I have encountered following errors while using ndk-build command.
I am using Android Studio 3.4
NDK is android-ndk-r13b
Error occuring is:
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/silk/NLSF2A.o: In function silk_NLSF2A':
E:/Projects/Android/opustest/app/src/main/jni/opus/silk/NLSF2A.c:130: undefined reference to silk_LPC_fit'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.o: In function opus_decoder_get_size':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:112: undefined reference to celt_decoder_get_size'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:112: undefined reference to celt_decoder_get_size'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.o: In function opus_decoder_init':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:148: undefined reference to celt_decoder_init'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:151: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.o: In function opus_decoder_get_size':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:112: undefined reference to celt_decoder_get_size'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.o: In function opus_decode_frame':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:491: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:493: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:502: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:503: undefined reference to celt_decode_with_ec'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:505: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:509: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:531: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:532: undefined reference to celt_decode_with_ec'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:516: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:518: undefined reference to celt_decode_with_ec'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:549: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:556: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:557: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:559: undefined reference to celt_decode_with_ec'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:560: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.o: In function opus_decoder_ctl':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:874: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:940: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_decoder.c:950: undefined reference to opus_custom_decoder_ctl'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encoder_get_size':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:178: undefined reference to celt_encoder_get_size'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:178: undefined reference to celt_encoder_get_size'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encoder_init':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:232: undefined reference to celt_encoder_init'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:235: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:236: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:266: undefined reference to tonality_analysis_init'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encoder_get_size':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:178: undefined reference to celt_encoder_get_size'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encode_native':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1134: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1155: undefined reference to tonality_analysis_reset'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1146: undefined reference to run_analysis'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1549: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1906: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1907: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1909: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1913: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o:E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:1917: more undefined references to opus_custom_encoder_ctl' follow
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encode_native':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2048: undefined reference to celt_encode_with_ec'E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2054: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2055: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2058: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2065: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2068: undefined reference to celt_encode_with_ec'E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2069: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2076: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2077: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2078: undefined reference to celt_encode_with_ec'E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2102: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2103: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2104: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2105: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2106: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2115: undefined reference to celt_encode_with_ec'E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2117: undefined reference to celt_encode_with_ec'E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2123: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/objs/senz/E_/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.o: In function opus_encoder_ctl':
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2689: undefined reference to tonality_analysis_reset'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2695: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2669: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2679: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2765: undefined reference to opus_custom_encoder_ctl'
E:/Projects/Android/opustest/app/src/main/jni/opus/src/opus_encoder.c:2720: undefined reference to opus_custom_encoder_ctl'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [E:/Projects/Android/opustest/app/src/main/obj/local/arm64-v8a/libsenz.so] Error 1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the build using Opus 1.3.1, Android Studio 3.4, and android-ndk-r13b with the linked tutorial. Start by inspecting the ndk-build configuration and the jni/opus source tree, especially the files producing the missing symbols such as opus_decoder.c and opus_encoder.c. Done means the arm64-v8a libsenz.so target links successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, c
- Domain
- audio-video-rtc, build-system, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100