Search code examples
node.jsglibcbuildroot

How do I include glibc versions needed by node in my buildroot config?


I'm building a root filesystem using buildroot (running on Ubuntu 22.04.4 LTS) for an ARM Cortex-A7 target. I'm including Node.js by selecting "[*] nodejs" in Target packages ---> Interpreter languages and scripting --->.

After successfully flashing and booting the target, I run node in /usr/bin/ and get:

/usr/bin # ./node
./node: /lib/libm.so.6: version `GLIBC_2.38' not found (required by ./node)
./node: /lib/libm.so.6: version `GLIBC_2.29' not found (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libstdc++.so.6: no version information available (required by ./node)
./node: /lib/libc.so.6: version `GLIBC_2.33' not found (required by ./node)
./node: /lib/libc.so.6: version `GLIBC_2.34' not found (required by ./node)
./node: /lib/libc.so.6: version `GLIBC_2.32' not found (required by ./node)
./node: /lib/libc.so.6: version `GLIBC_2.38' not found (required by ./node)
./node: /lib/libc.so.6: version `GLIBC_2.32' not found (required by /usr/lib/libuv.so.1)
./node: /lib/libc.so.6: version `GLIBC_2.38' not found (required by /usr/lib/libuv.so.1)
./node: /lib/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/libuv.so.1)
./node: /lib/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/libuv.so.1)
./node: /lib/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/libcares.so.2)
./node: /lib/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/libcares.so.2)
./node: /lib/libc.so.6: version `GLIBC_2.36' not found (required by /usr/lib/libcares.so.2)
./node: /lib/libc.so.6: version `GLIBC_2.38' not found (required by /usr/lib/libcares.so.2)
./node: /lib/libc.so.6: version `GLIBC_2.38' not found (required by /usr/lib/libcrypto.so.3)
./node: /lib/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/libcrypto.so.3)
./node: /lib/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/libcrypto.so.3)
./node: /lib/libc.so.6: version `GLIBC_2.33' not found (required by /usr/lib/libssl.so.3)
./node: /lib/libc.so.6: version `GLIBC_2.34' not found (required by /usr/lib/libssl.so.3)

I don't see how to change the buildroot config to include the required versions of GLIBC.

The only glibc-related config options I see (in make nconfig) is "Enable compatibility shims to run on older kernels" in Toolchain --->, which I checked.


Solution

  • You started the build of some configuration, then changed the toolchain settings, and then built again with the new settings without running make clean. You need an explicit make clean when toolchain settings are changed.