预感这样的问题会出现一列不同的原因,先记一个刚刚遇到的错误:
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
好吧,这个错误原因很明显,-c参数的意思是只激活预处理,编译,和汇编,也就是他只把程序做成obj文件。-c后接的是需要编译的文件,-o后接的才是生成的目标文件名,所以把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
,makefile有默认的后缀规则,让它自己去推导编译方式就行了