/usr/bin/ld:无法打开输出文件 bin/genericMatching:没有这样的文件或目录
/usr/bin/ld: cannot open output file bin/genericMatching: No such file or directory
我正在尝试使用 ubuntu 中的 makefile 编译我的 c++ 程序,但是有一个我无法理解的错误。这是我收到的错误消息。
Parallel/ParallelSlave.o Parallel/IOHandler.o commons/File19794.o -o bin/genericMatching
/usr/bin/ld: cannot open output file bin/genericMatching: No such file or directory
collect2: error: ld returned 1 exit status
Makefile:38: recipe for target 'bin/genericMatching' failed
这是我的 Makefile 中的代码,我的程序文件夹中没有 bin 文件/目录:
# The compiler to use.
CC = mpiCC
# Directories for Includes and Common clases
IDIR =include
CDIR =commons/
JIANGDIR =MatcherJiang/
MCCDIR =MCC/
PDIR =Parallel/
BINDIR =bin/
# Compiler options -Weffc++
CFLAGS= -Wall -O2 -fopenmp -I$(IDIR) -I$(JIANGDIR) -I$(MCCDIR)
# Sources and Common clases sources
SOURCES= $(PDIR)genericMatching.cpp
SOURCESD= $(PDIR)DPDDFF.cpp
CSOURCES= $(CDIR)Fingerprint.cpp $(CDIR)Score.cpp $(JIANGDIR)FingerprintJiang.cpp $(MCCDIR)MCC.cpp $(MCCDIR)Cylinder.cpp $(CDIR)Functions.cpp $(CDIR)Minutia.cpp $(CDIR)GrahamScanConvexHull.cpp $(CDIR)Munkres.cpp $(PDIR)ParallelHandler.cpp $(PDIR)ParallelMaster.cpp $(PDIR)ParallelSlave.cpp $(PDIR)IOHandler.cpp $(CDIR)File19794.cpp
# Objects
OBJECTS=$(SOURCES:.cpp=.o)
OBJECTSD=$(SOURCESD:.cpp=.o)
COBJECTS=$(CSOURCES:.cpp=.o)
# Name of the executable
EXECUTABLE=$(BINDIR)genericMatching
EXECUTABLED=$(BINDIR)DPDDFF
all: $(EXECUTABLE) $(EXECUTABLED)
.PHONY: doc
doc:
doxygen Doxyfile
$(EXECUTABLE): $(OBJECTS) $(COBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) $(COBJECTS) $(OBJECTFILES) -o $@ $(LDFLAGS)
$(EXECUTABLED): $(OBJECTSD) $(COBJECTS)
$(CC) $(CFLAGS) $(OBJECTSD) $(COBJECTS) $(OBJECTFILES) -o $@ $(LDFLAGS)
.cpp.o:
$(CC) $(CFLAGS) -c $< -o $@
clean:
rm -f $(OBJECTS) $(OBJECTSD) $(COBJECTS) $(EXECUTABLE) $(EXECUTABLED)
mrproper: clean
rm -r doc/latex doc/html
运行此规则时:
$(EXECUTABLE): $(OBJECTS) $(COBJECTS)
$(CC) $(CFLAGS) $(OBJECTS) $(COBJECTS) $(OBJECTFILES) -o $@ $(LDFLAGS)
它将隐式运行ld
来创建$(EXECUTABLE)
,这是bin/genericMatching
。 因为 bin 目录不存在,所以会引发错误。 我建议添加:
$(EXECUTABLE) $(EXECUTABLED): | $(BIN)
$(BIN) :
mkdir -p $@
到您的生成文件。 Make 将在构建可执行文件之前生成目录。 请注意,|
使其成为仅订单先决条件,这意味着如果$(BIN)
比任一目标更新,它将不会重新生成$(EXECUTABLE)
或$(EXECUTABLED)
。
相关文章:
- 加载"D:UsersPublicDocumentsopencvbuildx64vc14binopencv_world340d.dll",找不到或打开PDB文件
- 如何在 c++ 的".bin"文件中编写结构数组?
- /usr/bin/ld: build-debug/obj/gpsitem.o: 文件无法识别: 文件被截断
- 我可以在Windows(Visual C++)中读取bin文件,但不能在linux(GCC)上读取bin文件
- 使用 Qt: Clang: 错误: 没有这样的文件或目录 ' " ', /bin/sh: " : 找不到命令
- makefile 没有将 .o 和可执行文件放在各自的 obj 和 bin 目录中
- /usr/bin/ld: crtbegin.o: 没有这样的文件: 没有这样的文件或目录
- /usr/bin/ld:无法打开输出文件 bin/genericMatching:没有这样的文件或目录
- /usr/bin/ld找不到标头:未识别的文件格式
- 将.bin输入文件复制到 linux 中
- makefile:不同目录中的CPP文件,将对象文件重定向为./obj,并且可执行到./bin
- 从 bin 文件 -c++ 中读取十六进制数字为每个字符 2 位数字
- 无法读取 Ubuntu "Segmentation fault (core dumped)"中的.dat或.bin文件
- C/C 可以将所有动态库构建到一个bin文件中
- 在Eclipse(Ubuntu)创建C Makefile项目时,如何生成.bin(可执行文件)
- 原始位(来自.bin文件或硬件)到 C++ 中的位图像素
- execve /bin /bash:h:没有这样的文件或目录
- 从C#.NET到Objective-C或C 的bin文件
- 链接 CXX 可执行文件 - /usr/bin/ld:找不到
- 我应该如何生成 UserCalibration.bin 文件,如 OpenNI 示例 - NiUserTracker 中