PrésentationComment compiler le code C avec la bibliothèque "Unix networking programming book"?
J'ai commencé à suivre le livre Unix de programmation réseau 2003. J'ai téléchargé le code source sur le site officiel ici: source code. Cela inclut un fichier README, qui vous indique comment créer/compiler tous les fichiers inclus pour le livre.
J'ai suivi ces instructions sur cette page GitHub (qui a également le code source) github Et réussi à utiliser les fichiers make et configurer la source avec succès de ce qu'il semble.
Makefile pour compiler les exemples fournis
Le premier chapitre du programme sont des exemples dans le répertoire en surbrillance ci-dessous. Mon programme est '[LIVRE] daytimetcpcli.c' et placé à l'intérieur du Makefile fourni. Makefile A l'intérieur du répertoire cible:
unpv13e/intro$
(comprend tous les autres exemples de programmes de livre)
include ../Make.defines
PROGS = [BOOK]daytimetcpcli.c daytimetcpcli1 daytimetcpcli2 daytimetcpcli3 \
daytimetcpsrv daytimetcpsrv1 daytimetcpsrv2 daytimetcpsrv3 \
daytimetcpcliv6 daytimetcpsrvv6 \
byteorder
all: ${PROGS}
[BOOK]daytimetcpcli: [BOOK]daytimetcpcli.o
${CC} ${CFLAGS} -o [email protected] [BOOK]daytimetcpcli.o ${LIBS}
daytimetcpcli1: daytimetcpcli1.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli1.o ${LIBS}
daytimetcpcli2: daytimetcpcli2.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli2.o ${LIBS}
daytimetcpcli3: daytimetcpcli3.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcli3.o ${LIBS}
daytimetcpsrv: daytimetcpsrv.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv.o ${LIBS}
daytimetcpsrv1: daytimetcpsrv1.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv1.o ${LIBS}
daytimetcpsrv2: daytimetcpsrv2.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv2.o ${LIBS}
daytimetcpsrv3: daytimetcpsrv3.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrv3.o ${LIBS}
daytimetcpcliv6: daytimetcpcliv6.o
${CC} ${CFLAGS} -o [email protected] daytimetcpcliv6.o ${LIBS}
daytimetcpsrvv6: daytimetcpsrvv6.o
${CC} ${CFLAGS} -o [email protected] daytimetcpsrvv6.o ${LIBS}
byteorder: byteorder.o
${CC} ${CFLAGS} -o [email protected] byteorder.o ${LIBS}
clean:
rm -f ${PROGS} ${CLEANFILES}
Le problème
Je mis mon dossier à l'intérieur du Makefile. Cependant, quand je cours à nouveau. Cela se produit:
make: Nothing to be done for 'all'.
J'ai essayé aussi simplement normale avec GCC compilation:
gcc [BOOK]daytimetcpcli.c
fatal error: unp.h: No such file or directory
Alors ma question est de savoir comment puis-je compiler mon programme avec le Makefile fourni? est ce que j'ai fait correctement? Et je sais que je peux compiler avec GCC, mais je ne connais pas la syntaxe pour inclure les fichiers d'en-tête nécessaires avec GCC. C'est pourquoi j'ai essayé de le faire avec le Makefile.
Ce qui suit dans ma deuxième question, comment puis-je compiler sans makefile? (en utilisant gcc avec les correctes -I en-têtes)? gcc programme.c -I unp.h?
* Note '[LIVRE] daytimetcpcli.c' = daytimetcpcli.c dans le code source fourni sur le site officiel, dans la source.
Il vous manque clairement le fichier d'en-tête lorsque vous compilez directement. Le fichier Make.defines configure CFLAGS pour qu'il puisse le trouver. Je suis surpris par les caractères '[BOOK]', les crochets sont spéciaux pour le shell. Essayez plutôt d'utiliser le caractère de soulignement ou de les supprimer complètement. –
@icarus noté et corrigé merci, je ne savais pas cela. – digitalXmage