2 votes

Comment obtenir le code source de l'eglibc utilisé par Ubuntu ?

Comment puis-je obtenir le code source d'eglibc dans un format qui permette de parcourir les sources avec gdb ?

J'ai essayé d'utiliser apt-get source libc6-dev et cela fonctionne pour obtenir le code source, mais je pense que puisque les directives du pré-processeur n'ont pas été appliquées, les numéros de ligne que gdb a ne correspondent pas à la source que j'ai téléchargée. Cela le rend moins utile quand on essaie de parcourir le code source et de regarder comment les fonctions de la libc fonctionnent.

2voto

Matthew Schinckel Points 15596

Si vous voulez vraiment parcourir les sources, je vous recommande de construire une libc sans optimisation et sans dépouiller les binaires.

Heureusement, cela devrait être facile - puisque vous avez déjà les sources, vous pouvez construire des paquets à partir de celles-ci. Vous devez vous assurer que le fichier DEB_BUILD_OPTIONS La variable d'environnement contient noopt pour obtenir -O0 et les binaires nostrip pour garder les symboles de débogage, et ensuite construire normalement avec debuild :

sudo apt-get build-dep libc6
DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc

vous construira des paquets construits avec -O0 et sans les symboles de débogage dépouillés ; vous pouvez ensuite les installer avec dpkg et gdb récupérera les symboles de débogage. En prime, gdb saura également où trouver les fichiers sources, ce qui vous permettra d'obtenir des listes de sources.

Puisque nous n'avons pas changé la version des paquets, la prochaine fois que vous exécuterez une mise à niveau, apt remplacera ces paquets installés localement par les versions de l'archive.

1voto

Brett Points 174

Vous pouvez essayer apt-get source -d libc6-dev et cela devrait vous donner la source et le diff au format deb. Vous pouvez ensuite le décompresser et cela devrait vous donner les sources au format tar.gz ; décompressez-le également. Il devrait être stocké dans le répertoire dans lequel vous avez exécuté la commande apt-get.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X