我正在尝试使用MakeFile编译程序。但是,我似乎无法弄清楚在哪里贴上旗帜来识别pthreads,甚至是那个旗帜究竟是什么。
我已就此主题进行了一些搜索,但我觉得我发现的结果并不清楚如何解决问题,所以我将问题带到论坛帖子。
无论如何,这里是我文件的内容。我已经标出了我认为旗帜可以去的地方。
#CC = cc
CFLAGS=-Wall (flag here?)
OUTFILE=app
# Debug flags
DFLAGS=-g -DDEBUG
# Release flags
RFLAGS=
# Targets to build
SOURCES=PosixSavings.c
.PHONY: all
all: CFLAGS+=$(RFLAGS)
all: link
.PHONY: all-debug
all-debug: CFLAGS+=$(DFLAGS)
all-debug: link
.PHONY: clean
clean:
$(RM) $(SRCcIR)/*~
$(RM) $(INCDIR)/*~
$(RM) *~
$(RM) *.o
$(RM) $(OUTFILE)
link:
$(CC) $(CFLAGS) $(SOURCES) -o $(OUTFILE) (flag here?)
如果此处已存在解决方案并且我已经错过了,请随时指出 非常感谢你。
答案 0 :(得分:0)
我不知道该告诉你什么,因为它适用于我:
$ cat /tmp/pt.c
#include <stdio.h>
#include <pthread.h>
void* start(void* arg) { return arg; }
int main() { pthread_t pt; pthread_create(&pt, NULL, start, NULL); return 0; }
现在如果我在没有 -pthread
的情况下运行,我会得到:
$ cc -Wall -g -DDEBUG /tmp/pt.c -o /tmp/pt
/tmp/ccFyRHKv.o: In function `main':
/tmp/pt.c:6: undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
如果我添加-pthread
(并且我把它放在哪里并不重要):
$ cc -Wall -pthread -g -DDEBUG /tmp/pt.c -o /tmp/pt
不会打印错误或警告。
因此,您需要编辑您的问题并显示打印输出的编译行,以及生成的确切错误(请将它们剪切并粘贴到您的问题中,然后添加空格,使它们显示为代码块)。那么也许我们可以弄清楚发生了什么。