У меня есть программа на C, с которой я работал на нескольких компьютерах, и, хотя она корректно компилируется на моем MacBook, я не могу заставить программу скомпилироваться в подсистеме Windows для Linux, работающей в Ubuntu 18.04 и использующей gcc.
Программа порождает несколько потоков, и когда я пытаюсь скомпилировать ее в подсистеме Windows, я получаю сообщение об ошибке undefined reference to `pthread_create
.
Несколько других вопросов, таких как this this и this предлагают использовать -lpthread
в качестве флага компилятора для решения проблемы, но я уже делаю это, и он прекрасно компилируется в OSX, поэтому я подозреваю, что проблемаможет быть связано с моей конфигурацией WSL.
Мой Makefile:
CC = gcc
CCOPTS = -Wall -c -g -ggdb
LINKOPTS = -Wall -g -ggdb -lpthread
all: calc
calc: calc.o smp3_tests.o testrunner.o
$(CC) $(LINKOPTS) -o $@ $^
calc.o: calc.c calc.h
$(CC) $(CCOPTS) -o $@ $<
Я включаю заголовок pthread с #include <pthread.h>
и вызываю функцию pthread_create
с pthread_create(&multiplierThread, NULL, multiplier, arg)
.
Кто-нибудь знаетчто может быть причиной этой ошибки компилятора?