我正在尝试编译并运行我的 C 程序。该程序使用线程。我正在使用带有 Ubuntu 终端的 WSL 运行 Windows 10。(也尝试使用 Ubuntu 虚拟机)这是我用于所有程序的“默认”Makefile 格式(更改每个程序的名称和标志)
CC=gcc
CFLAGS=-I. -w -pthread
DEPS = v1.h
version1: v1
%.o: %.c $(DEPS)
$(CC) -c -o $@ $< $(CFLAGS)
v1: v1.o
$(CC) -o v1 v1.o
这是我第一次在 C 中使用线程,这让我发现了 -pthread。我发现你需要将它添加到标志中(我用 CFLAGS 做了)。出于某种原因,当我在上面运行这个 makefile 时出现错误,找不到 pthread 函数,我注意到修复它的方法是通过更改这一行:
$(CC) -o v1 v1.o -pthread
最后添加 pthread 。所有这一切都让我对标志进行了一些研究,在搜索 gcc 的手册页和谷歌之后,我发现这些问题没有简单的答案:
- 为什么我需要将 -pthread 添加到 .o 任务和 .c 任务?为什么仅将其添加到一个还不够?
- 什么是 -w 标志?我知道它代表“警告”,但 -w 和 -Wall 之间有什么区别?
- 什么是-I。旗帜?再次,我发现它代表“包含”,但我不确定它在做什么。我的 makefile 使用或不使用该标志。
谢谢你。