Error on a Rasperry Pi Jessie OS (ARM)
SuganNaickerf opened this issue · 8 comments
After the install and when I run "node -v" I get the error below.
node: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version CXXABI_1.3.9' not found (required by node) node: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version GLIBCXX_3.4.21' not found (required by node)
I did a "strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep GLIB" can get the following output.
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBC_2.4
GLIBC_2.18
No "GLIBCXX_3.4.21"
Any assistance would be appreciated. I also tried downgrading a few versions and get the same result.
[EDIT]
After some searching on the net, I found that the best approach is to either upgrade Jessie to Strech on Raspiberry Pi or copy libstdc++.so.6 from Strech to Jessie. Going with upgrade, will post results.
Thank you for posting - and yes, glibc is a source of pain with GoLang. Same kind of issues when compiling binaries in GoLang for Alpine Linux.
Wait - I just realized that this was a NodeJs error, and not an error with the installer? Interesting. I imagine that installing Node Version 8 might work on Jessy? I'm not sure what the cut off is if you're going to use an older distro.
Let me know what you find - I might have consider building in a distro check for older versions of Raspbian OS... or just state in the README.md that Jessy is no longer supported.
Wait - I just realized that this was a NodeJs error, and not an error with the installer? Interesting. I imagine that installing Node Version 8 might work on Jessy? I'm not sure what the cut off is if you're going to use an older distro.
Let me know what you find - I might have consider building in a distro check for older versions of Raspbian OS... or just state in the README.md that Jessy is no longer supported.
Thanks for the feedback. I needed minimum NodeJS version 10 in order for another app to work. I tried upgrading Jessie, but that itself did not solve my issues. Finally had to use a 'clean' image with the latest Buster (rather than upgrading).
Awesome! and thank you... I think that I'll just state that Jessy and Stretch aren't supported - It seems that GLIBC has changed the game for a LOT of Distros - I think we can thank containers for the code change in the dependency. I'll try a fresh version of Buster and see if I can run a really old version of NodeJs [v4] with the installer. I'm guessing that newer version GLIBC is backwards compatible, but I'm not completely sure... I'm not even sure people are running that old of a Node version anyway... but it's worth noting either way. So yeah, I'll likely just stick an update in the readme. 🙌
I think detecting the OS Jessy/Stretch and than getting/building GLIBC may not be the answer since this is a Node dependency. I'm not sure what to do since the older OS might be dependent on older GLIBC for web based actions. I'm going to just keep the issue open so that people running an old pi os are aware that this is a problem. Maybe compiling the new GLIBC and changing it on the older OS would work just fine, though I just think it's outside of the scope of this project.
weird, the installer/node works fine on my x64 running ubuntu, and:
$ ldd --version
ldd (Ubuntu GLIBC 2.34-0ubuntu2) 2.34
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.maybe the GLIBCXX_3.4.21 dependency is architecture dependent when it comes to node?
Note: I'm on ubuntu 21.10 also (super bleeding edge) 🙂 .
I think I was finally able to solve this problem on issue #31 - So I'm going to close this, and if the problem comes up again - I'll reopen - The problem was that I was compiling and cross compiling on a machine where GLIBC was too new, and newer version of GLIBC seem to work fine when using the compiled binaries utilizing GLIBC version 3.31