Gcc 生成文件返回错误

Gcc 生成文件返回错误,gcc,makefile,pthreads,Gcc,Makefile,Pthreads,我有一个makefile,它应该编译一组使用库的C文件。虽然makefile在我以前的Linux安装上运行,但我现在无法运行它。有人能帮我吗 CC=gcc CFLAGS=-c -std=c99 LDFLAGS= -lpthread SOURCES=pc_0.c stak.h OBJECTS=$(SOURCES:.c=.o) EXECUTABLE=pcths all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC)

我有一个makefile,它应该编译一组使用
库的C文件。虽然makefile在我以前的Linux安装上运行,但我现在无法运行它。有人能帮我吗

CC=gcc
CFLAGS=-c -std=c99
LDFLAGS= -lpthread
SOURCES=pc_0.c stak.h
OBJECTS=$(SOURCES:.c=.o)
EXECUTABLE=pcths

all: $(SOURCES) $(EXECUTABLE)   
$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.c.o:
    $(CC) $< -o $@ $(CFLAGS)
clean:
    rm -f *.o core
但是,如果手动运行以下指令,则会编译源代码:

cc pc_0.c -o pc_0.o -c -std=c99
cc pc_0.o -o pcths -lpthread

不确定它有多重要,但我总是在变量赋值周围添加“”,在尝试调试问题时,发布实际错误消息是最重要的


可能不是您的问题,但我通常将我的编辑器(emacs)设置为使用空格而不是制表符进行缩进,这会导致make出现问题。我必须突出显示all并运行
m-x tabify
来解决问题。

-lpthread
放在命令行末尾的对象文件之后,该文件需要来自
libthread的符号。[a | so]


当GNU ld(和其他链接器)解析未定义的引用时,它只在包含所述引用的对象之后的对象文件和库中查找符号定义。

您还可以发布它给出的错误吗?
stak.h
的处理看起来是错误的。您是否在两个系统上使用相同版本的gcc?没有错误,这只是猜测,但是否安装了libc dev?不,我猜gcc版本不同
cc pc_0.c -o pc_0.o -c -std=c99
cc pc_0.o -o pcths -lpthread