I built Firefox 26 on Mint 16 because the Ubuntu 10.04 build utilities are too old to build it. It does need to run on 10.04, however, since that's the target OS I'm building for. It built and runs just fine on Mint 16.

When moving the package over to 10.04 and attempting to run, I get errors because the OS uses a different libc version than Firefox was built against.

The actual error is:

/lib/libc.so.6: version `GLIBC_2.17' not found

I've been doing a lot of research trying to solve this, and so far have discovered the following:

I can point a binary at an alternate path for library files with

export LD_LIBRARY_PATH="/opt/lib"

I placed the libc.so.6 from Mint 16 into /opt/lib on 10.04 and ran the above command. But after changing that variable, i get:

error while loading shared libraries: __vdso_time:
   invalid mode for dlopen(): Invalid argument

Not just for firefox, but for every command, including things like ls. A bit more research suggests that I need a set of library files to make this work, not just libc.so.6. The problem is, I don't know which ones I need to copy over?

Then I discovered ldd. ldd ./firefox shows:

./firefox: /lib/libc.so.6: version `GLIBC_2.17' not found (required by ./firefox)
    linux-vdso.so.1 =>  (0x00007fffe9289000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00007f80ee456000)
    libdl.so.2 => /lib/libdl.so.2 (0x00007f80ee252000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f80edf3d000)
    libm.so.6 => /lib/libm.so.6 (0x00007f80edcba000)
    libc.so.6 => /lib/libc.so.6 (0x00007f80ed934000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f80ee68b000)
    libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007f80ed71c000)

And I thought, "maybe I just need to copy all of those on the list". Except I couldn't find a linux-vdso anywhere on Mint 16, and it's vdso that is being complained about.

So my question is, which libraries do I need to move from Mint 16 to Ubuntu 10.04 into /opt/var, to make Firefox run on 10.04?


linux-vdso (and linux-gate) are in-kernel libraries that handle the loading of ELF binaries; if you have a (relatively recent) Linux kernel, it has those. A probably-complete list would be:


Some of those you may not think you need, but dependencies have a way of sneaking up on you.

  • Thanks for the info. I'm locating the files now to move over and have 2 questions. It looks like many of the files, such as libutil.so.1 are symlinks to others, like libutil-2.17.so. If I take the real file is the binary smart enough to find it? Or should I rename the file to the same as the symlink? Or recreate the symlinks in my /opt/lib? Are the numbers after the .so relevant? Will it work if libutil.so.1 becomes libutil.so?
    – Nick
    Jan 8 '14 at 8:48
  • Also, I could not find libicdn, libieee, or librpcsvc...
    – Nick
    Jan 8 '14 at 8:51
  • I added the libraries to /opt/lib/ but am still getting the error error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument.
    – Nick
    Jan 8 '14 at 9:17
  • On my mobile; will answer more when I get home if nobody else has....
    – Bandrami
    Jan 8 '14 at 11:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.