Comment créer un lien vers un autre fichier libc?

Je souhaite fournir les bibliothèques partagées avec mon programme plutôt que d’utiliser le système cible en raison des différences de version.

ldd dit que mon programme utilise ces bibliothèques partagées:

 linux-gate.so.1 => (0xf7ef0000)**(made by kernel)** libc.so.6 => /lib32/libc.so.6 (0xf7d88000)**(libc-2.7.so)** /lib/ld-linux.so.2 (0xf7ef1000)**(ld-2.7.so)** 

J’ai lié avec succès ld-xxx.so en compilant avec:

 gcc -std=c99 -D_POSIX_C_SOURCE=200112L -O2 -m32 -s -Wl,-dynamic-linker,ld-2.7.so myprogram.c 

Mais je n’ai pas réussi à lier avec succès libc-xxx.so . Comment puis je faire ça ?

J’ai découvert comment le faire:

rpath spécifie l’emplacement des bibliothèques fournies. Ce dossier devrait contenir: libc.so.6 , libdl.so.2 , libgcc_s.so.1 et peut-être plus. Vérifiez auprès de strace quelles bibliothèques votre fichier binary utilise.

ld.so est le linker fourni

gcc -Xlinker -rpath=/default/path/to/libraries -Xlinker -I/default/path/to/libraries/ld.so program.c

Passer -nodefaultlibs ou -nostdlib à gcc lui indiquera de ne pas transmettre les bibliothèques par défaut en tant qu’arguments à ld. Vous serez alors en mesure de spécifier explicitement la libc que vous souhaitez lier. Reportez-vous à la page de manuel gcc(1) pour plus de détails et des mises en garde concernant les deux options.