Hey guys, I am just facing the same issue, did you manage to get a 
successful build?

On Wednesday, September 3, 2025 at 8:45:43 AM UTC-4 [email protected] 
wrote:

>   I am also struggling with the same issue. I believe the problem related 
> to temporal_rs can be resolved with the following gn flags.  
>       enable_rust=false
>       enable_rust_cxx=false
>       v8_enable_temporal_support=false
> 2025년 7월 30일 수요일 오전 11시 53분 24초 UTC+9에 sw l님이 작성:
>
>> *"However, after successfully compiling, I encountered the following 
>> undefined symbol issue when integrating it into the Android project."*
>>
>> [image: error.png]
>> 在2025年7月30日星期三 UTC+8 10:51:24<sw l> 写道:
>>
>>> *"Currently, I am still using the configuration use_custom_libcxx = 
>>> false, and I applied the following patch to modify the code and make it 
>>> compile successfully."*
>>>
>>>
>>> *builtins-typed-array.cc*
>>> diff --git a/src/builtins/builtins-typed-array.cc 
>>> b/src/builtins/builtins-typed-array.cc
>>> index abc1234..def5678 100644
>>> --- a/src/builtins/builtins-typed-array.cc
>>> +++ b/src/builtins/builtins-typed-array.cc
>>> @@ -506,10 +506,15 @@ simdutf::result ArrayBufferSetFromBase64(
>>> simdutf::last_chunk_handling_options last_chunk_handling,
>>> DirectHandle<JSTypedArray> typed_array, size_t& output_length) {
>>> output_length = array_length;
>>> - simdutf::result simd_result;
>>> + simdutf::result simd_result = {simdutf::error_code::SUCCESS, 0};
>>> if (typed_array->buffer()->is_shared()) {
>>> - simd_result = simdutf::atomic_base64_to_binary_safe(
>>> - reinterpret_cast<const T>(input_vector), input_length,
>>> + // For shared buffers, we need to copy to a temporary buffer first
>>> + std::unique_ptr<char[]> temp_input = 
>>> std::make_unique<char[]>(input_length);
>>> + std::memcpy(temp_input.get(), reinterpret_cast<const 
>>> char*>(input_vector),
>>> + input_length);
>>> + 
>>> + simd_result = simdutf::base64_to_binary_safe(
>>> + temp_input.get(), input_length,
>>> reinterpret_cast<char*>(typed_array->DataPtr()), output_length,
>>> alphabet, last_chunk_handling, /*decode_up_to_bad_char*/ true);
>>> } else {
>>> @@ -836,8 +841,13 @@ BUILTIN(Uint8ArrayPrototypeToBase64) {
>>> size_t simd_result_size;
>>> if (uint8array->buffer()->is_shared()) {
>>> - simd_result_size = simdutf::atomic_binary_to_base64(
>>> - std::bit_cast<const char*>(uint8array->DataPtr()), length,
>>> + // For shared buffers, we need to copy to a temporary buffer first
>>> + std::unique_ptr<char[]> temp_input = std::make_unique<char[]>(length);
>>> + std::memcpy(temp_input.get(), 
>>> + std::bit_cast<const char*>(uint8array->DataPtr()), length);
>>> + 
>>> + simd_result_size = simdutf::binary_to_base64(
>>> + temp_input.get(), length,
>>> reinterpret_cast<char*>(output->GetChars(no_gc)), alphabet);
>>> } else {
>>> simd_result_size = simdutf::binary_to_base64(
>>>
>>>
>>> simd.cc
>>> diff --git a/src/objects/simd.cc b/src/objects/simd.cc
>>> index ef2b8118eec..c595f955efe 100644
>>> --- a/src/objects/simd.cc
>>> +++ b/src/objects/simd.cc
>>> @@ -484,11 +484,23 @@ void AtomicUint8ArrayToHexSlow(const char* bytes, 
>>> size_t length,
>>> // https://cplusplus.github.io/LWG/issue3508
>>> // we instead provide a mutable input, which is ok since we are only 
>>> reading
>>> // from it.
>>> - char* mutable_bytes = const_cast<char*>(bytes);
>>> + // char* mutable_bytes = const_cast<char*>(bytes);
>>> for (size_t i = 0; i < length; i++) {
>>> - uint8_t byte =
>>> - 
>>> std::atomic_ref<char>(mutable_bytes[i]).load(std::memory_order_relaxed);
>>> - PerformNibbleToHexAndWriteIntoStringOutPut(byte, index, string_output);
>>> + // uint8_t byte =
>>> + // 
>>> std::atomic_ref<char>(mutable_bytes[i]).load(std::memory_order_relaxed);
>>> + // PerformNibbleToHexAndWriteIntoStringOutPut(byte, index, 
>>> string_output);
>>> +
>>> + // Use compiler built-in atomic load for shared memory
>>> + char byte;
>>> + __atomic_load(
>>> + const_cast<char*>(bytes) + i,
>>> + &byte,
>>> + __ATOMIC_RELAXED
>>> + );
>>> + PerformNibbleToHexAndWriteIntoStringOutPut(
>>> + static_cast<uint8_t>(byte), 
>>> + index, string_output);
>>> +
>>> index += 2;
>>> }
>>> }
>>> @@ -1081,14 +1093,23 @@ bool ArrayBufferFromHex(const base::Vector<T>& 
>>> input_vector, bool is_shared,
>>> size_t index = 0;
>>> std::optional<uint8_t> result = 0;
>>> - for (uint32_t i = 0; i < output_length * 2; i += 2) {
>>> + for (size_t i = 0; i < output_length * 2; i += 2) {
>>> result = HandleRemainingHexValues(input_vector, i);
>>> if (result.has_value()) {
>>> + uint8_t value = result.value();
>>> if (is_shared) {
>>> - std::atomic_ref<uint8_t>(buffer[index++])
>>> - .store(result.value(), std::memory_order_relaxed);
>>> + // std::atomic_ref<uint8_t>(buffer[index++])
>>> + // .store(result.value(), std::memory_order_relaxed);
>>> + // Use compiler built-in atomic store for shared memory
>>> + __atomic_store(
>>> + buffer + index,
>>> + &value,
>>> + __ATOMIC_RELAXED
>>> + );
>>> + index++;
>>> } else {
>>> - buffer[index++] = result.value();
>>> + // buffer[index++] = result.value();
>>> + buffer[index++] = value;
>>> }
>>> } else {
>>> return false;
>>>
>>> 在2025年7月29日星期二 UTC+8 20:13:45<[email protected]> 写道:
>>>
>>>> “Did you solve this issue? I’m currently facing the same problem and at 
>>>> the time I didn’t have a good solution. I’m using a configuration similar 
>>>> to yours and am encountering the exact same issue.”
>>>> 在2025年7月28日星期一 UTC+8 21:16:30<[email protected]> 写道:
>>>>
>>>>> *"When building the V8 static library for the Android platform 
>>>>> (arm64-v8a), the following error occurred in simdutf."*
>>>>>
>>>>> root@ce59529b30aa:~/v8/v8# gn gen out/android.arm64.monolith --args="
>>>>>
>>>>> >     target_os = \"android\"
>>>>>
>>>>> >     target_cpu = \"arm64\"
>>>>>
>>>>> >     is_debug = false
>>>>>
>>>>> >     optimize_for_size = true
>>>>>
>>>>> >     v8_enable_31bit_smis_on_64bit_arch = true
>>>>>
>>>>> >     symbol_level = 0
>>>>>
>>>>> >     v8_use_external_startup_data=false
>>>>>
>>>>> > 
>>>>>
>>>>> >     v8_monolithic = true
>>>>>
>>>>> >     v8_static_library = true
>>>>>
>>>>> >     is_component_build = false
>>>>>
>>>>> > 
>>>>>
>>>>> >     v8_enable_webassembly = false
>>>>>
>>>>> >     v8_enable_i18n_support = false
>>>>>
>>>>> >     #v8_enable_pointer_compression = true
>>>>>
>>>>> > 
>>>>>
>>>>> >     android_unstripped_runtime_outputs = false
>>>>>
>>>>> >     dcheck_always_on = false
>>>>>
>>>>> >     default_min_sdk_version = 21
>>>>>
>>>>> >     v8_android_log_stdout = true
>>>>>
>>>>> > 
>>>>>
>>>>> >     use_sysroot = false 
>>>>>
>>>>> >     use_custom_libcxx = false
>>>>>
>>>>> >     use_glib = false
>>>>>
>>>>> > "
>>>>>
>>>>> Done. Made 1013 targets from 228 files in 454ms
>>>>>
>>>>> root@ce59529b30aa:~/v8/v8# autoninja -C out/android.arm64.monolith 
>>>>> v8_monolith
>>>>>
>>>>> ninja: Entering directory `out/android.arm64.monolith'
>>>>>
>>>>>  1.06s load siso config
>>>>>
>>>>> [1227/3101] 25m00.40s F CXX 
>>>>> obj/v8_base_without_compiler/builtins-typed-array.o
>>>>>
>>>>> *FAILED: 6a074098-7768-4ded-a7d8-da56e857aaa2 
>>>>> "./obj/v8_base_without_compiler/builtins-typed-array.o" CXX 
>>>>> obj/v8_base_without_compiler/builtins-typed-array.o*
>>>>>
>>>>> err: exit=1
>>>>>
>>>>> ../../third_party/llvm-build/Release+Asserts/bin/clang++ -MD -MF 
>>>>> obj/v8_base_without_compiler/builtins-typed-array.o.d 
>>>>> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FORTIFY_SOURCE=2 
>>>>> -D_GNU_SOURCE -D__ARM_NEON__=1 -DANDROID 
>>>>> -D__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__ -DHAVE_SYS_UIO_H 
>>>>> -DANDROID_NDK_VERSION_ROLL=r28_1 
>>>>> -DCR_CLANG_REVISION=\"llvmorg-21-init-11777-gfd3fecfc-1\" 
>>>>> -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -DNDEBUG -DNVALGRIND 
>>>>> -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64 
>>>>> -DV8_TEMPORAL_SUPPORT -DV8_ATOMIC_OBJECT_FIELD_WRITES 
>>>>> -DV8_ENABLE_LAZY_SOURCE_POSITIONS -DV8_WIN64_UNWINDING_INFO 
>>>>> -DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH 
>>>>> -DV8_SNAPSHOT_COMPRESSION 
>>>>> -DV8_ENABLE_CONTROL_FLOW_INTEGRITY -DV8_ENABLE_FUZZTEST 
>>>>> -DV8_SHORT_BUILTIN_CALLS -DV8_EXTERNAL_CODE_SPACE -DV8_ENABLE_SPARKPLUG 
>>>>> -DV8_ENABLE_MAGLEV -DV8_ENABLE_TURBOFAN 
>>>>> -DV8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA -DV8_ALLOCATION_FOLDING 
>>>>> -DV8_ALLOCATION_SITE_TRACKING -DV8_USE_ZLIB -DV8_USE_LIBM_TRIG_FUNCTIONS 
>>>>> -DV8_ENABLE_MAGLEV_GRAPH_PRINTER -DV8_ENABLE_BUILTIN_JUMP_TABLE_SWITCH 
>>>>> -DV8_ENABLE_EXTENSIBLE_RO_SNAPSHOT -DV8_ENABLE_BLACK_ALLOCATED_PAGES 
>>>>> -DV8_ENABLE_LEAPTIERING -DV8_WASM_RANDOM_FUZZERS 
>>>>> -DV8_ARRAY_BUFFER_INTERNAL_FIELD_COUNT=0 
>>>>> -DV8_ARRAY_BUFFER_VIEW_INTERNAL_FIELD_COUNT=0 
>>>>> -DV8_PROMISE_INTERNAL_FIELD_COUNT=0 -DV8_COMPRESS_POINTERS 
>>>>> -DV8_COMPRESS_POINTERS_IN_SHARED_CAGE -DV8_31BIT_SMIS_ON_64BIT_ARCH 
>>>>> -DV8_ENABLE_SANDBOX -DV8_DEPRECATION_WARNINGS 
>>>>> -DV8_IMMINENT_DEPRECATION_WARNINGS -DV8_HAVE_TARGET_OS 
>>>>> -DV8_TARGET_OS_ANDROID -DCPPGC_CAGED_HEAP -DCPPGC_YOUNG_GENERATION 
>>>>> -DCPPGC_POINTER_COMPRESSION -DCPPGC_ENABLE_LARGER_CAGE 
>>>>> -DCPPGC_SLIM_WRITE_BARRIER -DV8_TARGET_ARCH_ARM64 -DV8_ANDROID_LOG_STDOUT 
>>>>> -DV8_RUNTIME_CALL_STATS -DABSL_ALLOCATOR_NOTHROW=1 
>>>>> -DTEMPORAL_CAPI_VERSION_0_0_9 -DHWY_BROKEN_TARGETS=HWY_ALL_SVE -I../.. 
>>>>> -Igen -I../../include -Igen/include -I../../third_party/abseil-cpp 
>>>>> -I../../third_party/fp16/src/include 
>>>>> -I../../third_party/rust/chromium_crates_io/vendor/temporal_capi-v0_0_9/bindings/cpp
>>>>>  
>>>>> -I../../third_party/dragonbox/src/include 
>>>>> -I../../third_party/fast_float/src/include 
>>>>> -I../../third_party/highway/src 
>>>>> -I../../third_party/zlib -Wall -Wextra -Wimplicit-fallthrough 
>>>>> -Wextra-semi 
>>>>> -Wunreachable-code-aggressive -Wthread-safety -Wgnu 
>>>>> -Wno-gnu-anonymous-struct -Wno-gnu-conditional-omitted-operand 
>>>>> -Wno-gnu-include-next -Wno-gnu-label-as-value -Wno-gnu-redeclared-enum 
>>>>> -Wno-gnu-statement-expression -Wno-gnu-zero-variadic-macro-arguments 
>>>>> -Wno-zero-length-array -Wunguarded-availability 
>>>>> -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi 
>>>>> -Wloop-analysis -Wno-unneeded-internal-declaration 
>>>>> -Wno-cast-function-type 
>>>>> -Wno-thread-safety-reference-return -Wno-nontrivial-memcall -Wshadow 
>>>>> -Werror -fno-delete-null-pointer-checks -fno-strict-overflow -fno-ident 
>>>>> -fno-strict-aliasing -fstack-protector -funwind-tables -fPIC 
>>>>> -fcolor-diagnostics -fmerge-all-constants -fno-sized-deallocation 
>>>>> -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm 
>>>>> -instcombine-lower-dbg-declare=0 -mllvm 
>>>>> -split-threshold-for-reg-with-hint=0 -ffp-contract=off 
>>>>> -ffunction-sections 
>>>>> -fno-short-enums -mbranch-protection=standard 
>>>>> --target=aarch64-linux-android21 -mno-outline 
>>>>> -Wno-builtin-macro-redefined 
>>>>> -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -ffile-compilation-dir=. 
>>>>> -no-canonical-prefixes -fno-omit-frame-pointer -g0 -Wheader-hygiene 
>>>>> -Wstring-conversion -Wtautological-overlap-compare -Wunreachable-code 
>>>>> -Wno-shadow -Wctad-maybe-unsupported -Xclang -add-plugin -Xclang 
>>>>> blink-gc-plugin -Wno-invalid-offsetof -Wshorten-64-to-32 
>>>>> -Wmissing-field-initializers -O2 -fdata-sections -ffunction-sections 
>>>>> -fno-unique-section-names -fno-math-errno -fvisibility=default 
>>>>> -Wexit-time-destructors -Wno-invalid-offsetof -Wenum-compare-conditional 
>>>>> -Wno-nullability-completeness -std=c++20 -Wno-trigraphs 
>>>>> -gsimple-template-names -fno-exceptions -fno-rtti 
>>>>> --sysroot=../../third_party/android_toolchain/ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot
>>>>>   
>>>>> -c ../../src/builtins/builtins-typed-array.cc -o 
>>>>> obj/v8_base_without_compiler/builtins-typed-array.o
>>>>>
>>>>> build step: cxx "./obj/v8_base_without_compiler/builtins-typed-array.o"
>>>>>
>>>>> siso_rule: clang/cxx
>>>>>
>>>>> stderr:
>>>>>
>>>>> *../../src/builtins/builtins-typed-array.cc:508:28: **error: **no 
>>>>> member named 'atomic_base64_to_binary_safe' in namespace 'simdutf'; did 
>>>>> you 
>>>>> mean 'base64_to_binary_safe'?*
>>>>>
>>>>>   508 |     simd_result = simdutf::atomic_base64_to_binary_safe(
>>>>>
>>>>>       | *                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~*
>>>>>
>>>>>       |                            base64_to_binary_safe
>>>>>
>>>>> *../../third_party/simdutf/simdutf.h:4369:1: **note: 
>>>>> *'base64_to_binary_safe' 
>>>>> declared here
>>>>>
>>>>>  4369 | base64_to_binary_safe(const char *input, size_t length, char 
>>>>> *output,
>>>>>
>>>>>       | *^*
>>>>>
>>>>> *../../src/builtins/builtins-typed-array.cc:829:35: **error: **no 
>>>>> member named 'atomic_binary_to_base64' in namespace 'simdutf'; did you 
>>>>> mean 
>>>>> 'binary_to_base64'?*
>>>>>
>>>>>   829 |       simd_result_size = simdutf::atomic_binary_to_base64(
>>>>>
>>>>>       | *                                  ^~~~~~~~~~~~~~~~~~~~~~~*
>>>>>
>>>>>       |                                   binary_to_base64
>>>>>
>>>>> *../../third_party/simdutf/simdutf.h:4110:8: **note: *'binary_to_base64' 
>>>>> declared here
>>>>>
>>>>>  4110 | size_t binary_to_base64(const char *input, size_t length, char 
>>>>> *output,
>>>>>
>>>>>       | *       ^*
>>>>>
>>>>> *../../src/builtins/builtins-typed-array.cc:509:9: **error: **cannot 
>>>>> initialize a parameter of type 'const char *' with an rvalue of type 
>>>>> 'const 
>>>>> char16_t *'*
>>>>>
>>>>>   509 |         reinterpret_cast<const T>(input_vector), input_length,
>>>>>
>>>>>       | *        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
>>>>>
>>>>> *../../src/builtins/builtins-typed-array.cc:687:21: **note: *in 
>>>>> instantiation of function template specialization 
>>>>> 'v8::internal::(anonymous 
>>>>> namespace)::ArrayBufferSetFromBase64<const char16_t *>' requested here
>>>>>
>>>>>   687 |       simd_result = ArrayBufferSetFromBase64(
>>>>>
>>>>>       | *                    ^*
>>>>>
>>>>> *../../third_party/simdutf/simdutf.h:4369:35: **note: *passing 
>>>>> argument to parameter 'input' here
>>>>>
>>>>>  4369 | base64_to_binary_safe(const char *input, size_t length, char 
>>>>> *output,
>>>>>
>>>>>       | *                                  ^*
>>>>>
>>>>> 3 errors generated.
>>>>>
>>>>>
>>>>> build failed
>>>>>
>>>>> local:1228 remote:0 cache:0 fallback:0 retry:0 skip:478
>>>>>
>>>>> fs: ops: 105378(err:21627) / r:13726(err:0) 1.09GiB / w:124(err:0) 
>>>>> 113.85MiB
>>>>>
>>>>>  resource/capa used(err)  wait-avg |   s m |  serv-avg |   s m |
>>>>>
>>>>>    localexec/8   1135(1)  5m01.65s |▂▂▂▂▃█▄|    10.36s | ▃▃█▅▂ |
>>>>>
>>>>>    pool=link/1     16(0)    13.35s |▆  ▇█▃ |     6.21s |  ▃█▃  |
>>>>>
>>>>>
>>>>> *25m00.93s* Build Failure: 1228 done 1 failed 1873 remaining - 0.82/s
>>>>>
>>>>>  1 steps failed: exit=1
>>>>>
>>>>> *see ./out/android.arm64.monolith/siso_output for full command line 
>>>>> and output*
>>>>>
>>>>> * or ./out/android.arm64.monolith/siso.INFO*
>>>>>
>>>>> *use ./out/android.arm64.monolith/siso_failed_commands.sh to re-run 
>>>>> failed commands*
>>>>>
>>>>>
>>>>> *------------------------------------------------------------------------------*
>>>>>
>>>>> *"If I remove the use_custom_libcxx, use_sysroot, and use_glib 
>>>>> configurations, it can successfully compile libv8_monolith.a. However, 
>>>>> when 
>>>>> I integrate it into my Android project and use NDK version 28.1.13356709, 
>>>>> it encounters unresolved symbol errors."*
>>>>>
>>>>>
>>>>> [image: error.png]
>>>>>
>>>>> *"I'm very confused right now and can't find any useful resources to 
>>>>> help me solve the problem. Please tell me how to compile a static library 
>>>>> that can be used on Android. The V8 tag I'm currently using is 13.9.210."*
>>>>>
>>>>>
>>>>>
>>>>>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/v8-users/ba107227-0c63-4fb7-b2f5-a4d0e369d4c8n%40googlegroups.com.

Reply via email to