gcc: error: 246.o: 没有那个文件或目录

预感这样的问题会出现一列不同的原因,先记一个刚刚遇到的错误:

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有默认的后缀规则,让它自己去推导编译方式就行了

你可能感兴趣的:(调试经验)