web-dev-qa-db-fra.com

Comment afficher la liste des fonctions de la bibliothèque c?

Je suis un débutant en programmation Linux. J'ai trouvé que le moyen de visualiser la liste des appels système sous Linux via une ligne de commande est:

man syscalls

Mais maintenant, je veux voir la liste des fonctions de la bibliothèque c, comment puis-je faire cela? Quelle commande m'aidera à répertorier les fonctions de la bibliothèque c? Et une autre question: où sont situés les appels système et les pages de manuel des fonctions de la bibliothèque c? Je vous remercie.

2
user205421

J'ai trouvé utile un navigateur de documentation hors ligne appelé (Zeal) similaire à Dash.

Autres options:

whereis glibc

ou

dpkg -L *libc*

Et ouvrez les fichiers dans un éditeur de texte.

Pour rechercher récursivement la chaîne dans les fichiers: grep -R "some string" /path/to/includes

Quelques pistes à considérer:

  • / usr/local/include
  • / usr/target/include
  • / usr/include

D'autres options peuvent inclure:

3
jmunsch

Quelle commande m'aidera à lister les fonctions de la bibliothèque c?

Voici un moyen de répertorier toutes les fonctions définies dans la bibliothèque standard C (GNU libc):

nm -D /lib/$(uname -m)-linux-gnu/libc-*.so | grep -vw U | grep -v "_" | cut -d " " -f3

Notez que les appels système seront également inclus car ce sont en réalité des fonctions qui encapsulent les appels système réels.

Où se trouvent les pages de manuel des appels système et des fonctions de la bibliothèque c?

Les pages de manuel des appels système se trouvent sous:

/usr/share/man/man2

Les pages de manuel des fonctions de la bibliothèque se trouvent sous:

/usr/share/man/man3
2
jlliagre

Il existe un paquet Nice permettant d'afficher l'en-tête de fonction C, nommé ref. Pour en savoir plus, voir man ref . Il a une bonne base de données où vous pouvez trouver la liste des fonctions de la bibliothèque C.

Les fonctions sont répertoriées dans le fichier _/usr/share/elvis/stubs/ansistub.c_. Vous pouvez directement y regarder pour voir les fonctions, ou vous pouvez les filtrer à votre guise.

Vous pouvez utiliser la grande ligne suivante dans votre terminal pour voir la liste complète à la fois,

_cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' | less
_

Vous obtiendrez une sortie comme

_void abort(void)
int abs(int num)
double acos(double cosvalue)
char *asctime(const struct tm *currtime)
double asin(double sinvalue)
void assert(int expression)
int atexit(void(*func)(void))
long int atol(const char *string)

....
_

Ou vous pouvez copier la liste dans un fichier _myCfunction.list_ en utilisant,

_cat /usr/share/elvis/stubs/ansistub.c | grep "^int\|^char\|^void\|^double\|^ldiv_t\|^unsigned\|^type\|^struct\|^FILE\|^size_t\|^time_t\|^long\|^clock\|^mbstowcs\|^div_t" | awk 'NR > 12' > myCfunction.list
_

Pour l'utiliser, installez d'abord ref à l'aide de la commande ci-dessous,

_Sudo apt-get install elvis-tools
_
0
souravc