Я в этом не шарю
4 / 4 / 3
Регистрация: 03.09.2014
Сообщений: 191
|
|
1 | |
У Makefile в многопотоке возникают ошибки11.05.2021, 19:34. Показов 383. Ответов 3
Есть проект С++, который собирается посредством makefile
В нём у меня предварительно создается папка build, куда складываются собранные файлы. А также после компиляции всех object-файлов, вызывается wildcard, который ищет object-файлы и передает их на сборку исполняемого файла. Так вот за счет того, что я запускаю его с флагом -j16 (16 потоков, столько же сколько у моего CPU) создается 2 проблемы: -папка неуспевает создаться, поэтому компиляция не идет дальше -object-файлы не успевают скомпилиться, из-за чего непопадают в wildcard и сборщик говорит что reference not found Всё выше описанное исправляется, если запустить компиляцию снова, но это не выход из ситуации. Вопрос: Как сделать так, чтобы в многопотоке операции выполнялись последовательно: -создание папки -компиляция object-файлов (многопоток) -сборки исполняемого файла отрывки из Makefile Код
# Copied from https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make/18258352#18258352 rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d)) release: prebuild $(RESULTLIB) prebuild: $(MKDIR) $(LIB) $(MKDIR) $(OBJDIR) $(RESULTLIB): $(LIBOBJS) $(AR) rs $(RESULTLIB) $(call rwildcard,$(OBJDIR),*.o)
0
|
|
11.05.2021, 19:34 | |
Ответы с готовыми решениями:
3
На моем компе во время установки игры часто возникают ошибки, зависания и ошибки копирования файлов с установочного диска. Почему возникают ошибки? В php возникают ошибки При компиляции возникают ошибки |
-271 / 68 / 21
Регистрация: 08.05.2021
Сообщений: 291
|
|
11.05.2021, 19:52 | 2 |
Код
target: prerequisite | directory ; ... directory: ; mkdir ... Код
prerequisites := $(patsubst %.c, %.o, $(wildcard, ..., *.c)) target: $(prerequisites) ; ... $(prerequisites) Наведённые ошибки. Исправь - заработает.
0
|
Я в этом не шарю
4 / 4 / 3
Регистрация: 03.09.2014
Сообщений: 191
|
|
11.05.2021, 22:06 [ТС] | 3 |
mashmed135, прочитал кучу статей и пробовал применить - неработает.
сделал проще - разделил компиляцию на 3 ступени и вызываю make по порядку для каждой из них.
0
|
-271 / 68 / 21
Регистрация: 08.05.2021
Сообщений: 291
|
|
12.05.2021, 07:54 | 4 |
Ну читать нужно было доку по GNU make - там всё есть. Но как знаешь.
А вообще, бери CMake - сразу куча проблем уйдёт.
0
|
12.05.2021, 07:54 | |
12.05.2021, 07:54 | |
Помогаю со студенческими работами здесь
4
Периодически возникают ошибки подключения
Сериализация по примерам, возникают ошибки Возникают две ошибки в любой программе
Uninitialized string offset возникают ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |