/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found

12 views
Skip to first unread message

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 8:13:43 AM1/8/14
to node-...@googlegroups.com
Hi, I reported this issue but no one could help me: https://github.com/rogerwang/node-webkit/issues/1454

I'm trying to distribute my app but hell is raised, since it's working on my PC with Linux Mint 15 but when trying to execute it on Ubuntu 12.04.3 LTS 64bit Kernel Linux 3.2.0-58 it raises the following error..

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.17' not found

How can I build my app and distribute it with telling the end user to recompile the whole kernel or any other required weird stuff?

PD: used the following tutorial to build my app: https://github.com/rogerwang/node-webkit/wiki/Application-auto-building-scripts-for-Linux-Windows-and-OSX

Thanks.

akademik nedelchev

unread,
Jan 8, 2014, 9:29:10 AM1/8/14
to node-...@googlegroups.com
cant you use the precompiled binary on the nodewebkit site ? runs on ubuntu 12.04 with no problem. What changes did you make to node-webkit that requieres custom compilation?


2014/1/8 Demián Andrés Rodriguez <demi...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "node-webkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to node-webkit...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Ewald Horn

unread,
Jan 8, 2014, 9:50:28 AM1/8/14
to node-...@googlegroups.com
Hi,

this is a well-documented problem on Ubuntu, I've had it with several versions of GLIBC : 2.14, 2.16 and 2.17.
The reason is that the libraries in Ubuntu 12.x LTS are OLD, and Node Webkit is compiled against a later version.

See http://askubuntu.com/questions/315907/libc-so-6-version-glibc-2-16-not-found, there's a solution listed. Basically, you need to update the libraries, or, alternatively, build Node Webkit against an older GLIBC version.

It's rather annoying, but hey, there's also quite a number of significant bug fixes in the later GLIBC's.

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 9:57:12 AM1/8/14
to node-...@googlegroups.com
Ok, but there is a risk of breaking the whole system if I update the lib.

I don't understand the first solution. What the hell is 
/catbed/ld-linux.so.3 --library-path=/catbed:/whatever-else /usr/bin/python -python-args
?

How can statically link that library inside my app package?

Thanks.


You received this message because you are subscribed to a topic in the Google Groups "node-webkit" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/node-webkit/2ja5_6AL9cI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to node-webkit...@googlegroups.com.

Ewald Horn

unread,
Jan 8, 2014, 10:01:48 AM1/8/14
to node-...@googlegroups.com
Ah,

on Fedora :

Usage: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
You have invoked `ld.so', the helper program for shared library executables.
This program usually lives in the file `/lib/ld.so', and special directives
in executable files using ELF shared libraries tell the system's program
loader to load the helper program from this file.  This helper program loads
the shared libraries needed by the program executable, prepares the program
to run, and runs it.  You may invoke this helper program directly from the
command line to load and run an ELF executable file; this is like executing
that file itself, but always uses this helper program from the file you
specified, instead of the helper program file specified in the executable
file you run.  This is mostly of use for maintainers to test new versions
of this helper program; chances are you did not intend to run this program.

  --list                list all dependencies and how they are resolved
  --verify              verify that given object really is a dynamically linked
                        object we can handle
  --inhibit-cache       Do not use /etc/ld.so.cache
  --library-path PATH   use given PATH instead of content of the environment
                        variable LD_LIBRARY_PATH
  --inhibit-rpath LIST  ignore RUNPATH and RPATH information in object names
                        in LIST
  --audit LIST          use objects named in LIST as auditors

Seems that you have a helper program that allows you to specify where to find libraries.  I'm not an Ubuntu user, but I suspect it'll do the same as the Fedora tool?

Frank Hale

unread,
Jan 8, 2014, 10:06:28 AM1/8/14
to node-...@googlegroups.com
Consequently the inverse is true on ArchLinux. Arch ships with a newer version of GLIBC and I've had to create a symlink to point to it so that NW will run there, because NW is compiled against an older version. 

Ewald Horn

unread,
Jan 8, 2014, 10:27:22 AM1/8/14
to node-...@googlegroups.com
Nice!

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 10:33:34 AM1/8/14
to node-...@googlegroups.com
OMG How complicated everything is!!!! 

ld.so does not exist in Ubuntu and I didn't understand how to use it. Could you give me an example please? Perhaps with glibc.so.6??

Thanks!!!


Ewald Horn

unread,
Jan 8, 2014, 10:39:27 AM1/8/14
to node-...@googlegroups.com
Hi.

It might be called something else on Ubuntu - try to locate ld-linux ?

/usr/lib/ld-linux.so.3 --library-path=/mypathtomylibs applicationtostart -application-args

So, you'd need to put your libraries in some folder, just to test first, and then substitute the names above for the application and any arguments you want to specify.  Like I said, I unfortunately do not have Ubuntu, so I can only guess what the names might be, but that should be pretty close :)

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 10:45:24 AM1/8/14
to node-...@googlegroups.com
What exactly do you mean with "my libraries"? I just need to ship libc.so.6 with my app package so that the end user does not need to do this nasty stuff.

Should /mypathtomylibs be inside my app resources or what? What should I put inside?

Thanks again. I'm really newbie with this stuff!!

Ewald Horn

unread,
Jan 8, 2014, 10:48:17 AM1/8/14
to node-...@googlegroups.com
Hi,

"your libraries" is your dependencies that you need to specify, like the exact version of GLIBC_2.17 that you need.  Yes, it can be a folder in your app, but you need to specify the location relatively then. I'd start with a fixed path just to test it at first.  Put the correct libc.so.6 or whatever file in there - point to it and you should be good to go...

Good luck man, we are all newbies at something :D

Frank Hale

unread,
Jan 8, 2014, 10:58:14 AM1/8/14
to node-...@googlegroups.com
If Node-Webkit needs some funky things like symlinks to work on a particular distribution of Linux then that is not your fault and not something you should be worrying about. Linux being the way it is, is always going to be moving so there will always be distributions with either an older version of GLIBC or a newer one. I would not worry about that if I were you. You simply make your app work within your known good configuration (ex. your working linux desktop) and let everything else fall by the way side.

Like I said earlier, I use Arch Linux, the compiled version of NW does not work on Arch because it has a newer version of GLIBC. I created a symlink with the same name as the version that NW is linked to and pointed the symlink to the version of GLIBC that Arch ships with. Everything seems to work. I don't blame my application code for this failure and I would not try to support this when my application is shipped. This is not your fault. This is just the reality of Linux and end users will have to get crafty sometimes in order to make things work.

Anyway, just my 2 cents.

Ewald Horn

unread,
Jan 8, 2014, 10:59:16 AM1/8/14
to node-...@googlegroups.com
Well said Frank,

Linux is a BEAST :)

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 11:59:49 AM1/8/14
to node-...@googlegroups.com
I'm sorry but I still don't get it. 
Where can I find the latest version of libc.so.6? Do i need to put it in a directory inside my app and then run:

/usr/lib/ld-linux.so.3 --library-path=mypathtomylibs app.nw

?

What is the magic? Will the correct version of the lib be included inside my app package? Can't I just put it there myself and avoid running that cmd?

Ewald Horn

unread,
Jan 8, 2014, 12:21:15 PM1/8/14
to node-...@googlegroups.com
Hi,

I believe you need to download that library from somewhere, for me, it's in my distro so it's easy.

That command allows you to override the libraries that are in the system. So, if you just copy the library into the folder, it won't work as the system will use whatever is the default libraries it has.  You need to run that particular style of command to force the use of the libraries you want it to use.

:)

I'm not a Linux expert, that's just how I understand it, I might be completely wrong here.

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 5:58:01 PM1/8/14
to node-...@googlegroups.com
Still too many holes in the plot:

1) I downloaded from somewhere that library and its a folder with hundreds of files inside... Is that correct?
2) In which computer do I need to run that command? In the system where I'm building the application package or in the target system?
3) How to specify libc.so version?
4) What do you mean with "just use fixed paths to test first"?

Demián Andrés Rodriguez

unread,
Jan 8, 2014, 7:24:24 PM1/8/14
to node-...@googlegroups.com
Maybe there already exists an old version of node-webkit that uses the old glibc lib <= 15?

Ewald Horn

unread,
Jan 9, 2014, 9:08:19 AM1/9/14
to node-...@googlegroups.com
Hi,

sorry I think the time zone differences are messing with us :)

You can always build your own that references an older library?

Kind regards,
Ewald

Demián Andrés Rodriguez

unread,
Jan 9, 2014, 9:43:28 AM1/9/14
to node-...@googlegroups.com
Thanks, it's fixed. I was using a node module compiled on Linux Mint 15.... I had to compile it using nw-gyp on Ubuntu!


--

Ewald Horn

unread,
Jan 9, 2014, 10:12:22 AM1/9/14
to node-...@googlegroups.com
That's brilliant!!


--
You received this message because you are subscribed to the Google Groups "node-webkit" group.
To unsubscribe from this group and stop receiving emails from it, send an email to node-webkit...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages