gpt4 book ai didi

compiler-errors - make -j2时Makefile错误 “File exists”

转载 作者:行者123 更新时间:2023-12-02 10:44:46 24 4
gpt4 key购买 nike

每当我仅使用“make”进行编译时,我的Makefile都可以正常工作。但是当我使用“make -j2”时,出现以下错误

mkdir: cannot create directory `objects': File exists
make: *** [objects/robot_driver_agent.o] Error 1

这是Makefile-
INCLUDE = -I/usr/include/X11 -I/usr/local/include -I/usr/local/include/FL/images -I/usr/include/freetype2

CC=g++
CFLAGS=-w -D LINUX -O3 -fpermissive
OBJDIR=objects
SRCDIR=src

LDFLAGS= -L/usr/X11R6/lib$(LIBSELECT) -lpthread -lfltk -lXext -lXft -lfontconfig -lXinerama -lpthread -ldl -lm -lX11

SOURCES_RAW= robot_driver_agent.cpp robot_driver_position.cpp robot_driver_priorityqueue.cpp main.cpp robot_driver_tree.cpp robot_driver_stack.cpp robot_driver_grid.cpp robot_driver_path.cpp grid_analyzer.cpp tcpserver.cpp tcpclient.cpp servercontrol.cpp clientcontrol.cpp robot.cpp udpserver.cpp udpclient.cpp owncontrol.cpp guiwindow.cpp rs232.cpp

TARGET:= go
TARGETD:= go_d

OBJECTS:=$(SOURCES_RAW:.cpp=.o)
OBJECTS:=$(patsubst %.o, $(OBJDIR)/%.o, $(OBJECTS))

SOURCES:=$(SOURCES_RAW)
SOURCES:=$(patsubst %.cpp, $(SRCDIR)/%.cpp, $(SOURCES))

all: $(TARGET)

$(TARGET): $(OBJECTS)
$(CC) -w -D LINUX $(INCLUDE) $^ -o $@ $(LDFLAGS)

$(OBJDIR)/%.o: src/%.cpp
test -d $(OBJDIR) || mkdir $(OBJDIR)
$(CC) -g -c $< $(CFLAGS) -o $@

debug: $(TARGETD)

$(TARGETD): $(OBJECTS)
$(CC) -w -D LINUX $(INCLUDE) $^ -o $@ $(LDFLAGS)

%.o: $(SRCDIR)/%.cpp
$(CC) -c -g $< $(CFLAGS)-o $@



.PHONY : clean
clean:
rm -f $(OBJDIR)/*.o
rm -f $(TARGET) $(TARGETD)

谁能告诉我为什么同时使用两个带有-j2的处理器会导致此错误出现以及如何解决?感谢您的任何帮助。

最佳答案

不要创建这样的目录;这是一个等待发生的比赛条件。让Make为您处理依赖性解析:

 $(OBJECTS): | $(OBJDIR)

$(OBJDIR):
mkdir $(OBJDIR)

直接从“制作”手册中的 order-only prerequisite example获取。

关于compiler-errors - make -j2时Makefile错误 “File exists”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9729451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com