Je viens de commencer la lecture du livre: Programmation avancée dans l'environnement UNIX® . Je voulais essayer d'exécuter son premier exemple de code. J'utilise Scientific Linux 6.4.
J'ai téléchargé le code source et comme il est dit dans son README, j'ai couru makedans le fichier non compressé.
J'ai écrit le premier programme (une fausse lscommande)
#include "./include/apue.h"
#include <dirent.h>
int
main(int argc, char *argv[])
{
DIR *dp;
struct dirent *dirp;
if(argc!=2)
err_quit("usage: test directory_name");
if((dp=opendir(argv[1]))==NULL)
err_sys("Can't open %s", argv[1]);
while((dirp=readdir(dp))!=NULL)
printf("%s\n", dirp->d_name);
closedir(dp);
return 0;
}
et le mettre dans le fichier non compressé. Comme le livre que j'avais conseillé alors couru: gcc myls.c. Mais je reçois cette erreur:
# gcc myls.c
/tmp/ccWTWS2I.o: In function `main':
test.c:(.text+0x20): undefined reference to `err_quit'
test.c:(.text+0x5b): undefined reference to `err_sys'
collect2: ld returned 1 exit status
Je voulais savoir comment résoudre ce problème. Je veux également pouvoir exécuter un code que j'écris dans n'importe quel répertoire.
includequi contient le fichier d'en-tête apue.h. Mais c'est le seul fichier de ce répertoire. Je ne comprends pas où sont les définitions de fonction réelles! Je pensais que quelqu'un connaissait peut-être la structure des fichiers de code source de ce livre ici.
.hfichiers incluent les protypes des fonctions. Leurs implémentations sont dans .soou des .afichiers qui doivent être présents sur la boîte. Ce sont des bibliothèques dynamiques et statiques qui contiennent les fonctions.
apue.h?
err_{quit,sys}?