Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用makefile和c++;11_C++_C++11_Makefile - Fatal编程技术网

C++ 使用makefile和c++;11

C++ 使用makefile和c++;11,c++,c++11,makefile,C++,C++11,Makefile,我的makefile当前有一些问题。我有一个cpp文件和一个h文件。我正在尝试使用c++11标准进行编译。这是我的makefile: OBJECTS = main.o #List all object files here separated by a space HEADERS = main.h #List all header files here seperated by a space lab8: $(OBJECTS) g++ $^ -o

我的makefile当前有一些问题。我有一个cpp文件和一个h文件。我正在尝试使用c++11标准进行编译。这是我的makefile:

OBJECTS = main.o
        #List all object files here separated by a space
HEADERS = main.h
        #List all header files here seperated by a space
lab8: $(OBJECTS)
        g++ $^ -o program3
%.o: %.cpp $(HEADERS)
        g++ -std=c++11 $< -o $@
clean:
        rm -f *.o program3

您是否知道导致此错误的原因?

您的编译规则缺少
-c
标志:

%.o: %.cpp $(HEADERS)
        g++ -std=c++11 $< -c -o $@
%.o:%.cpp$(标题)
g++-std=c++11$<-c-o$@

如果没有它,每个源文件将被编译/链接到一个完整的可执行文件中,而不是在编译步骤后停止创建一个简单的对象文件。然后,链接步骤尝试链接那些已链接的可执行文件,并由于多个符号声明而崩溃。

接受已链接可执行文件的链接器是否与
a.out
和ELF格式不同?(在Windows上,PE格式用于可执行文件,这是不可能的)@BenVoigt-可能是的。ELF格式用于可执行文件和对象文件。
%.o: %.cpp $(HEADERS)
        g++ -std=c++11 $< -c -o $@