Failed to build Android TVM RPC on mac

Hi, I try to run “gradle clean build” following tvm/apps/android_rpc at main · apache/tvm · GitHub to build the APK, and got the following error. What could be the issue?

Task :app:buildJni ################################ /Volumes/workplace/tvm/apps/android_rpc/app/src/main/jni fcntl(): Bad file descriptor make: Entering directory ‘/Volumes/workplace/tvm/apps/android_rpc/app/src/main/jni’ Android NDK: WARNING: APP_PLATFORM android-24 is higher than android:minSdkVersion 1 in /Volumes/workplace/tvm/apps/android_rpc/app/src/main/AndroidManifest.xml. NDK binaries will not be compatible with devices older than android-24. See docs/user/common_problems.md for more information. make: Leaving directory ‘/Volumes/workplace/tvm/apps/android_rpc/app/src/main/jni’ make: Entering directory ‘/Volumes/workplace/tvm/apps/android_rpc/app/src/main/jni’ [arm64-v8a] Compile++ : tvm4j_runtime_packed <= org_apache_tvm_native_c_api.cc [arm64-v8a] SharedLibrary : libtvm4j_runtime_packed.so ld: error: undefined symbol: vtable for tvm::runtime::MinRPCExecuteWithLog

referenced by minrpc_logger.h:203 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_logger.h:203) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::MinRPCSniffer(tvm::runtime::SnifferIOHandler*)) referenced by minrpc_logger.h:203 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_logger.h:203) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::MinRPCSniffer(tvm::runtime::SnifferIOHandler*)) the vtable symbol may be undefined because the class is missing its key function (see Missing Key Function — lld 15.0.0git documentation)

ld: error: undefined symbol: vtable for tvm::runtime::MinRPCReturnsWithLog

referenced by minrpc_logger.h:125 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_logger.h:125) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCReturnsWithLog::MinRPCReturnsWithLog(tvm::runtime::MinRPCReturnInterface*, tvm::runtime::Logger*)) referenced by minrpc_logger.h:125 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_logger.h:125) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCReturnsWithLog::MinRPCReturnsWithLog(tvm::runtime::MinRPCReturnInterface*, tvm::runtime::Logger*)) referenced by minrpc_logger.h:127 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_logger.h:127) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCReturnsWithLog::~MinRPCReturnsWithLog()) referenced 1 more times the vtable symbol may be undefined because the class is missing its key function (see Missing Key Function — lld 15.0.0git documentation)

ld: error: undefined symbol: tvm::runtime::MinRPCReturnsWithLog::ReturnPackedSeq(TVMValue const*, int const*, int)

referenced by minrpc_server_logging.h:95 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_server_logging.h:95) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::ProcessOneResponse())

ld: error: undefined symbol: tvm::runtime::Logger::OutputLog()

referenced by minrpc_server_logging.h:0 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_server_logging.h:0) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::ProcessOneResponse()) referenced by minrpc_server_logging.h:109 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_server_logging.h:109) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::ThrowError(tvm::runtime::RPCServerStatus, tvm::runtime::RPCCode))

ld: error: undefined symbol: tvm::runtime::MinRPCReturnsWithLog::ReturnException(char const*)

referenced by minrpc_server_logging.h:99 (…/…/…/…/…/…/include/…/src/runtime/rpc/…/minrpc/minrpc_server_logging.h:99) /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/objs/tvm4j_runtime_packed/org_apache_tvm_native_c_api.o:(tvm::runtime::MinRPCSniffer<tvm::runtime::SnifferIOHandler, tvm::runtime::detail::PageAllocator>::ProcessOneResponse()) clang++: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [/System/Volumes/Data/Volumes/workplace/CortexEdgeApp/env/android-sdk/ndk-bundle/build/core/build-binary.mk:728: /Volumes/workplace/tvm/apps/android_rpc/app/src/main/obj/local/arm64-v8a/libtvm4j_runtime_packed.so] Error 1 make: Leaving directory ‘/Volumes/workplace/tvm/apps/android_rpc/app/src/main/jni’

Did you build tvm and jvmpkg before gradle?

Hi, I checked in the latest code from repository and re-built it. Now it is working. Thank you.