Skip to content

Cannot build libnode v24.0.0 on Windows #58208

Open
@alshdavid

Description

@alshdavid

Version

24.0.0

Platform

Windows 11 x86_64

Subsystem

Windows 11
PowerShell

$ python --version
Python 3.10.6
$ clang --version
clang version 19.1.1
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\x64\bin
git clone "https://github.com/nodejs/node" --branch "v24.0.0"
cd node
.\vcbuild.bat                         # works
.\vcbuild.bat dll                     # does not work
.\vcbuild.bat x64 dll openssl-no-asm  # also does not work
$ .\vcbuild.bat dll
[vcvarsall.bat] Environment initialized for: 'x64'
Found MSVS version 17.0
Found Clang version 19.1.1
configure  --shared --dest-cpu=x64 --openssl-no-asm --clang-cl=19.1.1
Node.js configure: Found Python 3.10.6...

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

Every time

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

To produce a libnode.dll file

What do you see instead?

Build error

C:\Users\dalsh\Development\alshdavid\libnode-prebuilt\node\deps\v8\include\v8-primitive.h(203,3):
 message : 'Write' has been explicitly marked deprecated here [C:\Users\dalsh\Development\alshdav 
id\libnode-prebuilt\node\libnode.vcxproj]
C:\Users\dalsh\Development\alshdavid\libnode-prebuilt\node\deps\v8\include\v8config.h(608,35): me 
ssage : expanded from macro 'V8_DEPRECATED' [C:\Users\dalsh\Development\alshdavid\libnode-prebuil 
t\node\libnode.vcxproj]
lld-link : error : undefined symbol: public: __cdecl node::ThreadsafeCopyOnWrite<class std::map<c
lass std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>, class no 
de::UnionBytes, struct std::less<class std::basic_string<char, struct std::char_traits<char>, cla
ss std::allocator<char>>>, class std::allocator<struct std::pair<class std::basic_string<char, st 
ruct std::char_traits<char>, class std::allocator<char>> const, class node::UnionBytes>>>>::Read: 
:Read(class node::ThreadsafeCopyOnWrite<class std::map<class std::basic_string<char, struct std:: 
char_traits<char>, class std::allocator<char>>, class node::UnionBytes, struct std::less<class st 
d::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>>, class std::all 
ocator<struct std::pair<class std::basic_string<char, struct std::char_traits<char>, class std::a 
llocator<char>> const, class node::UnionBytes>>>> const *) [C:\Users\dalsh\Development\alshdavid\ 
libnode-prebuilt\node\libnode.vcxproj]
  >>> referenced by C:\Users\dalsh\Development\alshdavid\libnode-prebuilt\node\src\node_builtins. 
  h:131
  >>>               out\Release\obj\libnode\\tools\msvs\pch\node_pch.obj:(public: <auto> __cdecl  
  node::builtins::BuiltinLoader::GetBuiltinIds(void) const)

lld-link : error : undefined symbol: public: class std::map<class std::basic_string<char, struct  
std::char_traits<char>, class std::allocator<char>>, class node::UnionBytes, struct std::less<cla 
ss std::basic_string<char, struct std::char_traits<char>, class std::allocator<char>>>, class std 
::allocator<struct std::pair<class std::basic_string<char, struct std::char_traits<char>, class s 
td::allocator<char>> const, class node::UnionBytes>>> const & __cdecl node::ThreadsafeCopyOnWrite 
<class std::map<class std::basic_string<char, struct std::char_traits<char>, class std::allocator 
<char>>, class node::UnionBytes, struct std::less<class std::basic_string<char, struct std::char_ 
traits<char>, class std::allocator<char>>>, class std::allocator<struct std::pair<class std::basi 
c_string<char, struct std::char_traits<char>, class std::allocator<char>> const, class node::Unio 
nBytes>>>>::Read::operator*(void) const [C:\Users\dalsh\Development\alshdavid\libnode-prebuilt\no 
de\libnode.vcxproj]
  >>> referenced by C:\Users\dalsh\Development\alshdavid\libnode-prebuilt\node\src\node_builtins. 
  h:131
  >>>               out\Release\obj\libnode\\tools\msvs\pch\node_pch.obj:(public: <auto> __cdecl  
  node::builtins::BuiltinLoader::GetBuiltinIds(void) const)

Additional information

I have a repo that create prebuilt libnode binaries and the pipeline fails on Windows x64 and MacOS x64

https://github.com/alshdavid/libnode-prebuilt/actions/runs/14870045413/job/41756186494

Metadata

Metadata

Assignees

No one assigned

    Labels

    windowsIssues and PRs related to the Windows platform.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions