【发布时间】:2023-03-23 21:06:01
【问题描述】:
我正在尝试使用 MakeFile 编译程序。但是,我似乎无法弄清楚在哪里粘贴标志以使其识别 pthread,甚至不知道该标志到底是什么。
我对这个问题做了一些搜索,但我觉得我找到的结果并不清楚如何解决这个问题,所以我把这个问题带到了一个论坛帖子中。
无论如何,这是我文件的内容。我已经标记了我认为国旗可以去的地方。
#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?)
如果这里已经存在解决方案但我错过了,请随时指出它。
非常感谢。
【问题讨论】:
-
你没有说你想添加什么确切的标志,你没有说你尝试了什么,你没有说你尝试了什么没有工作。另外,这是一个奇怪的 makefile;在这里有一个makefile几乎没有任何意义;您可以使用简单的 shell 脚本获得相同的行为。
-
我明白了。我道歉。我需要的标志是-pthread 或-lpthread。我尝试将这些标志放置在标记的位置以及代码中的其他位置,但没有任何结果。另外,我同意手动执行此操作会更简单,但这是为了学校作业,教授想要一个 MakeFile。
-
“没有结果”是什么意思?构建是否失败?你的程序失败了吗?为什么你觉得有问题?你也没有说你正在使用什么编译器;不同编译器的标志可能不同。但是,对于 GCC,正确的标志是
-pthread,它可以出现在命令行的任何位置。 -
再次,我为疏忽道歉。构建实际上失败了,因为编译器告诉我所有 pthread 函数都未定义。是的,我正在使用 GCC。
-
我已经尝试将 -pthread 添加到 make 文件中,但构建仍然失败。说函数引用未定义。
标签: makefile