はじめ"Unix networking programming book"ライブラリでCコードをコンパイルするには?
私は本UNIXネットワークプログラミング2003次始めました。私はここに公式サイトからソースコードをダウンロードしました:source code。これには、READMEファイルが含まれています。これは、本のために含まれているすべてのファイルをビルド/コンパイルする方法を示しています。
このGitHubページ(ソースコードもあります)の指示に従いますgithubそして、makeファイルを使用してソースが正常に表示されるように管理しました。例をコンパイルする
Makefileは例がディレクトリにあるプログラムの最初の章では、以下強調表示
を提供しました。 私のプログラムは '[BOOK] daytimetcpcli.c'であり、提供されているMakefileの中に配置されています。ターゲットディレクトリ内のMakefile:
unpv13e/intro$
(他のすべての書籍のサンプルプログラムが含まれます)
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}
問題
私はMakefileの内側に私のファイルを置きました。しかし、私は再び 'make'を実行します。これが発生します。
gcc [BOOK]daytimetcpcli.c
fatal error: unp.h: No such file or directory
だから私の質問はどのように私は提供されるMakefileと私のプログラムをコンパイルするんです:
make: Nothing to be done for 'all'.
を私はまた、GCCと普通のコンパイルしようとしましたか?私は正しいことをしていますか?そして私はGCCでコンパイルできることを知っていますが、GCCで必要なヘッダーファイルを含める構文はわかりません。だから私はMakefileでそれをやろうとしたのです。
私の2番目の質問に続き、makefileなしでどのようにコンパイルすればよいですか? (正しい-I ヘッダのgccを使用して)? gcc program.c -I unp.h?
※公式サイトのソースコードの '[BOOK] daytimetcpcli.c' = daytimetcpcli.cに注意してください。
直接コンパイルすると、明らかにヘッダーファイルがありません。ファイルMake.definesはCFLAGSを見つけることができるようにCFLAGSを設定しています。私は '[BOOK]'文字に驚いています。大括弧はシェルにとって特別です。アンダースコアを使用するか、完全に削除してみてください。 –
@icarusは注意して修正しました。私はこれを知らなかった。 – digitalXmage