【发布时间】:2026-01-04 18:20:08
【问题描述】:
我的问题是关于 linux 上的编译错误。每次我尝试编译程序时,它都会给我这个错误。我尝试了不同的东西,但没有运气。
*** 没有规则可以创建目标 '/pthread.d',这是 '/thread.exe' 所需要的。停下来。
程序的makefile(pthread如下:
SOURCES=pthread.cpp
OBJECTS=$(addprefix $(BUILD_DIR)/, $(SOURCES:.cpp=.o))
DEPS=$(addprefix $(BUILD_DIR)/, $(SOURCES:.cpp=.d))
EXE=thread.exe
CXXFLAGS=-I.
LIBS=-pthread
//Making for host > make ARCH=host
ifeq ($(ARCH),host)
CXX=g++
BUILD_DIR=build/host
BIN_DIR=bin/host
endif
//Making for target > make ARCH= target
ifeq ($(ARCH),target)
CXX=arm-rpizw-g++
BUILD_DIR=build/target
BIN_DIR=bin/target
endif
all: $(BIN_DIR)/$(EXE)
$(BIN_DIR)/$(EXE): $(DEPS) $(OBJECTS)
mkdir -p $(BIN_DIR)
$(CXX) $(CXXFLAGS) -o $@ $(OBJECTS)
$(BUILD_DIR)/%.d: %.cpp
mkdir -p $(BUILD_DIR)
$(CXX) -MT$(@:.d=.o) -MM $(CXXFLAGS) $^ > $@
$(BUILD_DIR)/%.o: %.cpp
mkdir -p $(BUILD_DIR)
$(CXX) -c $< -o $@ $(CXXFLAGS)
ifneq ($(MAKECMDGOALS), $(filter $(MAKECMDGOALS),clean help))
-include $(DEPS)
endif
clean:
-rm -rf bin/
-rm -rf build/
【问题讨论】:
-
这不是你的问题,但这是个坏主意。
SOURCES=pthread.cpp考虑将源文件命名为更独特的名称,以免与官方库文件混淆。并不是说pthread.cpp存在于任何库中,但请考虑例如您的该源的标头是否称为pthread.h... yikes -
谢谢贾斯汀,这是一个很好的观点。 :)
标签: c++ linux multithreading makefile host