c - Cygwin 中无法识别的命令行选项 ‘-pthread’

标签 c gcc makefile cygwin pthreads

我正在尝试构建 April Tags 的 C 实现Cygwin 中的项目,但在运行 make 时出现以下错误(我已经从 Cygwin 的开发部分安装了 gcc-core 和 make 包):

apriltag.o
gcc: error: unrecognized command line option ‘-pthread’
Makefile:23: recipe for target 'apriltag.o' failed
make: *** [apriltag.o] Error 1

makefile 的内容是:

CC = gcc
AR = ar

CFLAGS = -std=gnu99 -Wall -Wno-unused-parameter -Wno-unused-function -pthread -I. -Icommon -O1
LDFLAGS = -lpthread -lm

APRILTAG_OBJS = apriltag.o apriltag_quad_thresh.o tag16h5.o tag25h7.o tag25h9.o tag36h10.o tag36h11.o tag36artoolkit.o g2d.o common/zarray.o common/zhash.o common/zmaxheap.o common/unionfind.o common/matd.o common/image_u8.o common/pnm.o common/image_f32.o common/image_u32.o common/workerpool.o common/time_util.o common/svd22.o common/homography.o common/string_util.o common/getopt.o

LIBAPRILTAG := libapriltag.a

all: $(LIBAPRILTAG) apriltag_demo


$(LIBAPRILTAG): $(APRILTAG_OBJS)
    @echo "   [$@]"
    @$(AR) -cq $@ $(APRILTAG_OBJS)

apriltag_demo: apriltag_demo.o
    @echo "   [$@]"
    @$(CC) -o $@ apriltag_demo.o $(APRILTAG_OBJS) $(LDFLAGS)

%.o: %.c
    @echo "   $@"
    @$(CC) -o $@ -c $< $(CFLAGS)

clean:
    @rm -rf *.o common/*.o $(LIBAPRILTAG) apriltag_demo 

我读到 cygwin 支持 posix 线程,所以我不确定为什么这不起作用。我还遇到了 patch应该在 cygwin 中启用设置 -pthreads 但我不知道如何使用它。 我该如何解决这个错误?

最佳答案

使用-lpthread。如果您完全删除标志,您可能会退回到 pthread 函数的 stub 实现(有效地禁用线程功能)。这显然是不推荐的。 见https://stackoverflow.com/a/48365044/8979940

关于c - Cygwin 中无法识别的命令行选项 ‘-pthread’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28278815/

相关文章:

c++ - caml_hash_varian返回的值在什么范围?

c - 如何更改连续地址的内存?

在 Linux mint 中从 C 程序创建临时文件

c++ - 使用 crosstool-ng 编译 gcc 时出错

c++ - 检查 Makefile 中使用的 g++ 版本

linux - 如何处理 make 中的特殊情况?

c++ - makefile 编译问题

c - C 中无重复的随机数数组

c - 如何更改此 shellcode 中的程序集以使其适用于任何 IP 和端口?

c - C 中的 putw() 函数