c++ - 错误 : no such file or directory: '–std=c++11' after compiling makefile

标签 c++ c++11 compilation makefile

当我在终端中使用 make 进行编译时,它会打印:

g++ -Wall –std=c++11 -c File.cpp
clang: error: no such file or directory: '–std=c++11'
make: *** [Book.o] Error 1

生成文件:

PROG = studs
CC = g++
OBJS = File.o FileTestDriver.o
CPPFLAGS = -Wall –std=c++11

$(PROG) : $(OBJS)
    $(CC) -o $(PROG) $(OBJS)
File.o : File.h
    $(CC) $(CPPFLAGS) -c File.cpp
FileTestDriver.o :
    $(CC) $(CPPFLAGS) -c FileTestDriver.cpp
clean:
    $(RM) $(PROG) $(OBJS)

FileTestDriver 具有主要功能,而 File.cpp 只是一个带有一些构造函数、实例变量和函数的简单类。我不确定问题出在哪里,但我认为它在 Makefile 中,因为我今天才开始使用它们。

当我简单地编译 g++ -std=c++11 File.cpp 时,我得到了错误:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但我假设错误是因为它有一个 .h 并且需要编译 makefile。无论如何,不​​确定我做错了什么,但我很感激任何帮助。如果需要更多信息,请告诉我。

此外(也许这应该是一个单独的问题/我需要更仔细地看),但是在使用 makefile 之后,./a.out 将只运行 makefile,而不管最后一件事我编的。不确定如何更改它。

最佳答案

如果您仔细查看您的编译行,您会发现 Wall 之前的 - std=c++11 之前:

g++ -Wall –std=c++11 -c File.cpp
    ^     ^

这是这两个选项,一个在另一个下面,用 Windows 截图工具捕获并用 Paint.net 放大。您可以清楚地看到第二个“连字符”更宽:

enter image description here

它更宽,因为它不是连字符 - 该字符实际上是一个en dash(Unicode 代码点U+2013)。

此问题通常是由直接从文字处理器(a) 或网页等地方剪切和粘贴引起的。因为它不被视为有效的前导字符(hyphen-minus 或 Unicode 代码点 U+002D),它只是被视为文件名,因此出现错误.

我建议您重新键入该行(或仅 -std=c++11 位)以确保它使用了正确的字符。


(a) 具有智能文本替换功能的文字处理器通常会将连字符转换为 en- 或 em- 破折号,或者从 "pax"“pax”。您可以禁用此行为(例如 MS Word 中的智能引号),但它有时非常方便。

我只是倾向于避免将文字处理器用作文本编辑器,或者意识到剪切'n'粘贴代码可能包含“可疑”字符的可能性。如果我从 Web 或文字处理器获得的一段文本导致我的构建系统出错,我会检查(并手动重新输入)有问题的部分。

关于c++ - 错误 : no such file or directory: '–std=c++11' after compiling makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33684759/

相关文章:

c++ - 与 libQt5Core 的链接

compilation - Common Lisp 编译和加载目录

c++ - 有什么方法可以使用 OpenCV 进行基于特征的本地化吗?

c++ - 在双端队列之间移动唯一指针

C++ 定义跨文件常量的最佳方式

c++ - 线程——Mac 与 Linux

c++ - 具有匿名结构的不同位映射

c++ - while( cin >> value ) 在我输入一个字符时打破循环

c++ - 调用 const 可变 lambda

java编译的类包含美元符号