预感这样的问题会出现一列不同的原因,先一个刚刚遇到的错误:
hzq@ubuntu:$ make
gcc -Wall -g -c 246.o 246.c
gcc: error: 246.o: 没有那个文件或目录
makefile:20: recipe for target '246.o' failed
make: *** [246.o] Error 1
好吧,这个错误很明显,生成 .o目标文件(object)的编译选项-c后不需要指定生成的文件名,所以把makefile改成
include ../unpv22e/Make.defines
# Following required by Solaris 2.x for Posix version of sigwait().
#CFLAGS += -D_POSIX_PTHREAD_SEMANTICS
PROGS = 246
CFLAGS = -Wall -g
VPATH = ../unpv22e/lib
depends_c = $(wildcard ../unpv22e/lib/*.c)
depends_o = $(wildcard ../unpv22e/lib/*.o)
depends_h = $(wildcard ../unpv22e/lib/*.h)
all: ${PROGS}
#ar rv ${LIBUNPIPC_NAME} $? #创建库文件
#${RANLIB} ${LIBUNPIPC_NAME}
246:246.o ../unpv22e/lib/px_ipc_name.c ../unpv22e/lib/error.c
${CC} ${CFLAGS} -o 246 246.o ../unpv22e/lib/px_ipc_name.c ../unpv22e/lib/error.c -pthread
246.o : 246.c
${CC} ${CFLAGS} -c 246.c
clean:
rm -f *.o
或者直接去掉 ${CC} ${CFLAGS} -c 246.c
,让make自己去推导编译方式