link error when build a test app on Android simulator

87 views
Skip to first unread message

qinghai xiao

unread,
Oct 17, 2019, 4:08:06 AM10/17/19
to v8-users
Hi everyone,I'm working on an android application that needs javascript support.Then I build a v8 static library and link it to as dynamic library.But nkd comes link error like:

error: undefined reference to 'v8::platform::NewDefaultPlatform(int, v8::platform::IdleTaskSupport, v8::platform::InProcessStackDumping, std::__ndk1::unique_ptr<v8::TracingController, std::__ndk1::default_delete<v8::TracingController> >)'
../../src/base/platform/platform.h:381: error: undefined reference to 'v8::base::Thread::GetThreadLocal(int)'
...
error: undefined reference to 'std::__1::__vector_base_common<true>::__throw_length_error() const'

and so on.My v8 version is 7.7.299.6 and i use Ubuntu 18.04.2 to build android library.these are my gn args:

is_component_build = false
is_debug = false
target_cpu = "x86"
target_os = "android"
use_goma = false
v8_static_library = true
v8_use_external_startup_data = false


And then I use Android studio on windows 10 to link libraries,ndk version is 20.0.5594570,Android.mk file is as follows:

LOCAL_PATH := $(call my-dir)

V8_LIB_PATH := $(ProjectFileDir)/app/src/main/jni/lib

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_base_without_compiler
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_base_without_compiler.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_libbase
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_libbase.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_libplatform
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_libplatform.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_snapshot
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_snapshot.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_libsampler
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_libsampler.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libv8_compiler
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libv8_compiler.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libicuuc
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libicuuc.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libicui18n
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libicui18n.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := libtorque_generated_definitions
LOCAL_SRC_FILES := $(V8_LIB_PATH)/libtorque_generated_definitions.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_C_INCLUDES := $(ProjectFileDir)/app/src/main/jni/include

LOCAL_CFLAGS := -std=c++11


LOCAL_STATIC_LIBRARIES := v8_libbase v8_libplatform v8_base_without_compiler libicui18n libicuuc libtorque_generated_definitions v8_libsampler libv8_compiler libv8_snapshot

LOCAL_MODULE := test
LOCAL_SRC_FILES := $(ProjectFileDir)/app/src/main/jni/test.cpp
LOCAL_LDLIBS := -llog -landroid -std=c++11

include $(BUILD_SHARED_LIBRARY)

---
  Application.mk :

APP_MODULES := test
APP_ABI := x86
APP_STL := c++_static
APP_CPPFLAGS := -std=c++11


The source code is just a sample hello-world program from v8/samples/hello-world.cc.Could someone can give me a help?


   
Reply all
Reply to author
Forward
0 new messages