using LOCAL_LDLIBS := -lmediandk (libmediandk.so) with ndk-build produces error on all archetectures. Am i doing something wrong?

1,148 views
Skip to first unread message

Patrick Wright

unread,
Sep 28, 2016, 11:55:28 AM9/28/16
to android-ndk
I am trying to build native-codec NDK sample with my own Android.mk and Application.mk instead of gradle. With every architecture I try I get either of the following two errors:

 signal.h header file has error?

ndk-build clean && ndk-build
[x86_64] Clean          : native-codec-jni [x86_64]
[x86_64] Clean          : stdc++ [x86_64]
[x86_64] Compile++      : native-codec-jni <= native-codec-jni.cpp
In file included from /home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/linux/signal.h:21:0,
                 
from /home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:43,
                 
from /home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/sys/select.h:35,
                 
from /home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/unistd.h:34,
                 
from /home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:31:
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:101:20: error: expected ';' at end of member declaration
 
#define sa_handler _u._sa_handler
                   
^
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:86:18: note: in expansion of macro 'sa_handler'
     sighandler_t sa_handler
;
                 
^
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:101:22: error: expected unqualified-id before '.' token
 
#define sa_handler _u._sa_handler
                     
^
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:86:18: note: in expansion of macro 'sa_handler'
     sighandler_t sa_handler
;
                 
^
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/asm/signal.h:102:24: error: expected ')' before '.' token
 
#define sa_sigaction _u._sa_sigaction
                       
^
/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include/signal.h:87:12: note: in expansion of macro 'sa_sigaction'
     
void (*sa_sigaction)(int, struct siginfo*, void*);
           
^
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp: In function 'void doCodecWork(workerdata*)':
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:45:76: warning: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'ssize_t {aka int}' [-Wformat=]
 
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
                                                                           
^
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:95:9: note: in expansion of macro 'LOGV'
         LOGV
("input buffer %zd", bufidx);
         
^
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:45:76: warning: format '%zd' expects argument of type 'signed size_t', but argument 4 has type 'int' [-Wformat=]
 
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
                                                                           
^
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:143:13: note: in expansion of macro 'LOGV'
             LOGV
("unexpected info code: %zd", status);
             
^
make
: *** [/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/obj/local/x86_64/objs/native-codec-jni/native-codec-jni.o] Error 1




 the libmediandk.so file is never found.


[x86] Clean          : native-codec-jni [x86]
[x86] Clean          : stdc++ [x86]
[x86] Compile++      : native-codec-jni <= native-codec-jni.cpp
[x86] Compile++      : native-codec-jni <= looper.cpp
[x86] StaticLibrary  : libstdc++.a
[x86] SharedLibrary  : libnative-codec-jni.so
/home/c/Android/Sdk/ndk-bundle/toolchains/x86-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin/ld: error: cannot find -lmediandk
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:94: error: undefined reference to 'AMediaCodec_dequeueInputBuffer'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:98: error: undefined reference to 'AMediaCodec_getInputBuffer'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:99: error: undefined reference to 'AMediaExtractor_readSampleData'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:105: error: undefined reference to 'AMediaExtractor_getSampleTime'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:108: error: undefined reference to 'AMediaCodec_queueInputBuffer'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:109: error: undefined reference to 'AMediaExtractor_advance'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:115: error: undefined reference to 'AMediaCodec_dequeueOutputBuffer'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:129: error: undefined reference to 'AMediaCodec_releaseOutputBuffer'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:137: error: undefined reference to 'AMediaCodec_getOutputFormat'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:138: error: undefined reference to 'AMediaFormat_toString'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:139: error: undefined reference to 'AMediaFormat_delete'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:172: error: undefined reference to 'AMediaExtractor_seekTo'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:173: error: undefined reference to 'AMediaCodec_flush'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:161: error: undefined reference to 'AMediaCodec_stop'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:162: error: undefined reference to 'AMediaCodec_delete'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:163: error: undefined reference to 'AMediaExtractor_delete'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:225: error: undefined reference to 'AAssetManager_fromJava'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:225: error: undefined reference to 'AAssetManager_open'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:225: error: undefined reference to 'AAsset_openFileDescriptor'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:237: error: undefined reference to 'AMediaExtractor_new'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:240: error: undefined reference to 'AMediaExtractor_setDataSourceFd'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:247: error: undefined reference to 'AMediaExtractor_getTrackCount'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:275: error: undefined reference to 'AMediaFormat_delete'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:253: error: undefined reference to 'AMediaExtractor_getTrackFormat'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:254: error: undefined reference to 'AMediaFormat_toString'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:257: error: undefined reference to 'AMEDIAFORMAT_KEY_MIME'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:257: error: undefined reference to 'AMediaFormat_getString'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:263: error: undefined reference to 'AMediaExtractor_selectTrack'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:264: error: undefined reference to 'AMediaCodec_createDecoderByType'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:265: error: undefined reference to 'AMediaCodec_configure'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:273: error: undefined reference to 'AMediaCodec_start'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:310: error: undefined reference to 'ANativeWindow_release'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:321: error: undefined reference to 'ANativeWindow_release'
/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/jni/native-codec-jni.cpp:324: error: undefined reference to 'ANativeWindow_fromSurface'
collect2: error: ld returned 1 exit status
make: *** [/home/c/Downloads/android-ndk-master2/MyApplication/app/src/main/obj/local/x86/libnative-codec-jni.so] Error 1


Below are my Android.mk and Application.mk files.

Android.mk:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CFLAGS += -std=c++11
LOCAL_CFLAGS    += -UNDEBUG
LOCAL_LDLIBS    := -lmediandk
LOCAL_LDLIBS    += -OpenMAXAL

LOCAL_LDLIBS    += -llog

CC=/home/c/Downloads/Openglxmlfour/arm-linux-androideabi/bin/arm-linux-androideabi-gcc

CXX=/home/c/Downloads/Openglxmlfour/arm-linux-androideabi/binarm-linux-androideabi-g++

LOCAL_MODULE    := native-codec-jni  # name your module here.

LOCAL_SRC_FILES := native-codec-jni.cpp looper.cpp

LOCAL_C_INCLUDES=/home/c/Android/Sdk/ndk-bundle/platforms/android-21/arch-arm/usr/include

include $(BUILD_SHARED_LIBRARY)


Application.mk

NDK_TOOLCHAIN_VERSION := 4.9
APP_ABI := x86


Please let me know if I am doing something. I am working on the errors in the native-codec-jni.cpp file. Thank you


Gerry Fan

unread,
Oct 5, 2016, 12:19:23 AM10/5/16
to android-ndk
the command line ndk-build version is kept here:

  ( googlesamples/android-ndk, branch android-mk ).  could you try that one and see how it goes?
Reply all
Reply to author
Forward
0 new messages