Compilation avec -static-libgcc -statique-libstdc++ encore les résultats dans la dynamique de la dépendance de la libc.donc

Je suis en train de faire un exécutable qui est aussi portable que possible. Après la suppression d'un peu de dépendances, je suis tombé sur les éléments suivants lors de l'exécution du binaire sur un autre système:

/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.15' not found (required by foob)
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.15' not found (required by foob)
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by foob)

Je préfère mon binaire de ne pas obliger l'utilisateur à mettre à niveau leur version de libc, donc je voudrais supprimer cette dépendance.

L'éditeur de liens indicateurs de produit ci-dessus binaire déjà inclus -static-libgcc -static-libstdc++. Comment se fait le binaire nécessite encore sur le partage des de la libc..6?

J'ai essayé d'ajouter le -static drapeau, cependant lorsque j'essaie d'exécuter que binaire le résultat est très étrange:

$ ls -l foob
-rwxr-xr-x 1 claudiu claudiu 13278191 Oct 10 13:03 foob
$ ./foob
bash: ./foob: No such file or directory

Que faire?

EDIT:

$ file foob
foob: ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=5adee9a598b9261a29f1c7b0ffdadcfc72197cd7, not stripped
$ strace -f ./foob
execve("./foob", ["./foob"], [/* 64 vars */]) = -1 ENOENT (No such file or directory)
write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory
) = 40
exit_group(1)                           = ?
+++ exited with 1 +++

Intéressant, si je ldd la version sans -static, il a deux moins entrées que la version avec -static, à savoir:

libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4f420c1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4f41636000)
pouvez-vous montrer strace -f -v pour que binaire statique? Que dire de "fichier foob" ? Vous voudrez peut-être inclure la source et de la cible (linux?) les distributions + architectures que vous utilisez.
Comme l'a suggéré, exécutez file foob. Assurez-vous que c'est un 64-bit exécutable.
J'ai juste compilé une simplish programme avec le -statique drapeau: "gcc-o ts --std=c99 --essai statique.c". Fonctionne très bien.
exécuter strace -f ./foob afin que nous puissions voir ce que le "No such file or directory".
Je n'ai jamais eu un problème avec -static sur plusieurs systèmes linux. J'ai peut-être eu à installer des bibliothèques statiques, mais qu'il a été.

OriginalL'auteur Claudiu | 2014-10-10