Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v8: "ld.lld: error: unable to find library -lrt" when building for android aarch64 #50184

Closed
MatteoBax opened this issue Oct 14, 2023 · 3 comments · Fixed by #51632
Closed

v8: "ld.lld: error: unable to find library -lrt" when building for android aarch64 #50184

MatteoBax opened this issue Oct 14, 2023 · 3 comments · Fixed by #51632
Labels
android Issues and PRs related to the android platform. build Issues and PRs related to build files or the CI. v8 engine Issues and PRs related to the V8 dependency.

Comments

@MatteoBax
Copy link
Contributor

MatteoBax commented Oct 14, 2023

Version

No response

Platform

No response

Subsystem

No response

What steps will reproduce the bug?

./android-configure /home/matteo/Android/Sdk/ndk/26.1.10909125 33 aarch64
make AR_host=gcc-ar CC_host=gcc CXX_host=g++ AR_target=/home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar CC_target=/home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang CXX_target=/home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -j8

How often does it reproduce? Is there a required condition?

No response

What is the expected behavior? Why is that the expected behavior?

No response

What do you see instead?

/home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -rdynamic -pthread -fPIC  -o /home/matteo/node/out/Release/bytecode_builtins_list_generator -Wl,--start-group /home/matteo/node/out/Release/obj.host/bytecode_builtins_list_generator/deps/v8/src/builtins/generate-bytecodes-builtins-list.o /home/matteo/node/out/Release/obj.host/bytecode_builtins_list_generator/deps/v8/src/interpreter/bytecode-operands.o /home/matteo/node/out/Release/obj.host/bytecode_builtins_list_generator/deps/v8/src/interpreter/bytecodes.o /home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/libv8_libbase.a -Wl,--end-group -ldl -lrt
rm -f /home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/libtorque_base.a ar-file-list; mkdir -p `dirname /home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/libtorque_base.a`
  touch /home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/v8_maybe_icu.stamp
  /home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -rdynamic -pthread -fPIC  -o /home/matteo/node/out/Release/genccode -Wl,--start-group /home/matteo/node/out/Release/obj.host/genccode/deps/icu-small/source/tools/genccode/genccode.o /home/matteo/node/out/Release/obj.host/genccode/tools/icu/no-op.o /home/matteo/node/out/Release/obj.host/tools/icu/libicutools.a -Wl,--end-group 
ar crsT /home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/libtorque_base.a @/home/matteo/node/out/Release/obj.host/tools/v8_gypfiles/libtorque_base.a.ar-file-list
  /home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -rdynamic -pthread -fPIC  -o /home/matteo/node/out/Release/icupkg -Wl,--start-group /home/matteo/node/out/Release/obj.host/icupkg/deps/icu-small/source/tools/icupkg/icupkg.o /home/matteo/node/out/Release/obj.host/icupkg/tools/icu/no-op.o /home/matteo/node/out/Release/obj.host/tools/icu/libicutools.a -Wl,--end-group 
  /home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -o /home/matteo/node/out/Release/obj.host/gen-regexp-special-case/deps/v8/src/regexp/gen-regexp-special-case.o ../deps/v8/src/regexp/gen-regexp-special-case.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DOPENSSL_NO_ASM' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_ANDROID' '-DV8_EMBEDDER_STRING="-node.12"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_SCRIPTORMODULE_LEGACY_LIFETIME' '-DV8_ADVANCED_BIGINT_ALGORITHMS' '-DUCONFIG_NO_SERVICE=1' '-DU_ENABLE_DYLOAD=0' '-DU_STATIC_IMPLEMENTATION=1' '-DU_HAVE_STD_STRING=1' '-DUCONFIG_NO_BREAK_ITERATION=0' -I../deps/v8 -I../deps/v8/include -I../deps/icu-small/source/common -I../deps/icu-small/source/i18n -I../deps/icu-small/source/tools/toolutil  -msign-return-address=all -Wno-unused-parameter -Wno-return-type -Wno-invalid-offsetof -pthread -fno-omit-frame-pointer -fPIC -I/home/matteo/Android/Sdk/ndk/26.1.10909125/sources/android/cpufeatures -fdata-sections -ffunction-sections -O2 -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF /home/matteo/node/out/Release/.deps//home/matteo/node/out/Release/obj.host/gen-regexp-special-case/deps/v8/src/regexp/gen-regexp-special-case.o.d.raw   -c
  /home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -rdynamic -fPIC  -o /home/matteo/node/out/Release/openssl-cli -Wl,--start-group /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/cmp_mock_srv.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/asn1parse.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ca.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ciphers.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/cmp.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/cms.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/crl.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/crl2pkcs7.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/dgst.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/dhparam.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/dsa.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/dsaparam.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ec.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ecparam.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/enc.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/engine.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/errstr.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/fipsinstall.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/gendsa.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/genpkey.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/genrsa.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/info.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/kdf.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/list.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/mac.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/nseq.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ocsp.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/openssl.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/passwd.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkcs12.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkcs7.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkcs8.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkey.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkeyparam.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/pkeyutl.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/prime.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/config/archs/linux-aarch64/no-asm/apps/progs.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/rand.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/rehash.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/req.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/rsa.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/rsautl.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/s_client.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/s_server.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/s_time.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/sess_id.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/smime.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/speed.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/spkac.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/srp.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/storeutl.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/ts.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/verify.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/version.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/x509.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/app_libctx.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/app_params.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/app_provider.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/app_rand.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/app_x509.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/apps.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/apps_ui.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/columns.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/engine.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/engine_loader.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/fmt.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/http_server.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/names.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/opt.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/s_cb.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/s_socket.o /home/matteo/node/out/Release/obj.target/openssl-cli/deps/openssl/openssl/apps/lib/tlssrp_depr.o /home/matteo/node/out/Release/obj.target/deps/openssl/libopenssl.a -Wl,--end-group -ldl -pthread -llog
  /home/matteo/Android/Sdk/ndk/26.1.10909125/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android33-clang++ -o /home/matteo/node/out/Release/obj.host/torque/deps/v8/src/torque/torque.o ../deps/v8/src/torque/torque.cc '-D_GLIBCXX_USE_CXX11_ABI=1' '-DNODE_OPENSSL_CONF_NAME=nodejs_conf' '-DNODE_OPENSSL_HAS_QUIC' '-DICU_NO_USER_DATA_OVERRIDE' '-DV8_GYP_BUILD' '-DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64' '-D__STDC_FORMAT_MACROS' '-DOPENSSL_NO_PINSHARED' '-DOPENSSL_THREADS' '-DOPENSSL_NO_ASM' '-DV8_TARGET_ARCH_ARM64' '-DV8_HAVE_TARGET_OS' '-DV8_TARGET_OS_ANDROID' '-DV8_EMBEDDER_STRING="-node.12"' '-DENABLE_DISASSEMBLER' '-DV8_PROMISE_INTERNAL_FIELD_COUNT=1' '-DOBJECT_PRINT' '-DV8_INTL_SUPPORT' '-DV8_ATOMIC_OBJECT_FIELD_WRITES' '-DV8_ENABLE_LAZY_SOURCE_POSITIONS' '-DV8_USE_SIPHASH' '-DV8_SHARED_RO_HEAP' '-DV8_WIN64_UNWINDING_INFO' '-DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH' '-DV8_USE_ZLIB' '-DV8_ENABLE_TURBOFAN' '-DV8_ENABLE_WEBASSEMBLY' '-DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS' '-DV8_ALLOCATION_FOLDING' '-DV8_ALLOCATION_SITE_TRACKING' '-DV8_SCRIPTORMODULE_LEGACY_LIFETIME' '-DV8_ADVANCED_BIGINT_ALGORITHMS' -I../deps/v8 -I../deps/v8/include  -msign-return-address=all -Wno-unused-parameter -Wno-return-type -Wno-invalid-offsetof -pthread -fno-omit-frame-pointer -fPIC -I/home/matteo/Android/Sdk/ndk/26.1.10909125/sources/android/cpufeatures -fdata-sections -ffunction-sections -O2 -fno-rtti -std=gnu++17 -fexceptions -MMD -MF /home/matteo/node/out/Release/.deps//home/matteo/node/out/Release/obj.host/torque/deps/v8/src/torque/torque.o.d.raw   -c
ld.lld: error: unable to find library -lrt
clang-17: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [tools/v8_gypfiles/bytecode_builtins_list_generator.host.mk:182: /home/matteo/node/out/Release/bytecode_builtins_list_generator] Errore 1
make[1]: *** Attesa per i processi non terminati....
rm 109db30b704daa7e37b6b6bf14e3cf59c50e35a6.intermediate f73d378443b8a378aa897525a53a3f5c94703f4e.intermediate
make: *** [Makefile:134: node] Errore 2

Additional information

By making the following change:

['is_android', {
          'sources': [
            '<(V8_ROOT)/src/base/platform/platform-posix.cc',
            '<(V8_ROOT)/src/base/platform/platform-posix.h',
            '<(V8_ROOT)/src/base/platform/platform-posix-time.cc',
            '<(V8_ROOT)/src/base/platform/platform-posix-time.h',
          ],
          'link_settings': {
            'target_conditions': [
              ['_toolset=="host" and host_os=="linux"', {
                'libraries': [
-                  '-ldl',
+                  '-ldl',
+                  '-lc'
-                  '-lrt'
                ],
              }],
            ],
          },
          'target_conditions': [
            ['_toolset=="host"', {
              'sources': [
                '<(V8_ROOT)/src/base/debug/stack_trace_posix.cc',
                '<(V8_ROOT)/src/base/platform/platform-linux.cc',
              ],
            }, {
              'sources': [
                '<(V8_ROOT)/src/base/debug/stack_trace_android.cc',
                '<(V8_ROOT)/src/base/platform/platform-linux.cc',
              ],
            }],
          ],
        }],

in the file tools/v8_gypfiles/v8.gyp this problem no longer occurs during building.

I don't know if this could be a valid solution.

@bnoordhuis
Copy link
Member

Android is self-serve. Go ahead if you want to submit that change as a pull request.

@bnoordhuis bnoordhuis added build Issues and PRs related to build files or the CI. v8 engine Issues and PRs related to the V8 dependency. android Issues and PRs related to the android platform. labels Oct 14, 2023
@MatteoBax
Copy link
Contributor Author

When I have some time this week, I'll open a pull request.

@MatteoBax
Copy link
Contributor Author

MatteoBax commented Feb 22, 2024

I apologize if I haven't opened the pull request yet, I was busy for a while and forgot about it.

The Android documentation says this:
Note that on Android, unlike Linux, there are no separate libpthread or librt libraries. That functionality is included directly in libc, which does not need to be explicitly linked against.

I'll open the pull request by tomorrow.

nodejs-github-bot pushed a commit that referenced this issue Feb 25, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this issue Feb 26, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this issue Feb 26, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
marco-ippolito pushed a commit that referenced this issue Feb 27, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
richardlau pushed a commit that referenced this issue Mar 25, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
richardlau pushed a commit that referenced this issue Mar 25, 2024
PR-URL: #51632
Fixes: #50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
rdw-msft pushed a commit to rdw-msft/node that referenced this issue Mar 26, 2024
PR-URL: nodejs#51632
Fixes: nodejs#50184
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
android Issues and PRs related to the android platform. build Issues and PRs related to build files or the CI. v8 engine Issues and PRs related to the V8 dependency.
Projects
None yet
2 participants