Ubuntu Linux 上的 Makefile C++11 错误

Makefile C++11 errors on Ubuntu Linux

本文关键字:C++11 错误 Makefile 上的 Linux Ubuntu      更新时间:2023-10-16

>我在 IDE CLion 中编写了一个应用程序。我正在尝试在Linux机器上创建一个Makefile。我使用模板生成文件来创建自己的生成文件,但是存在问题。请注意,有 3 个类称为报价、交易和信号。

CXX = g++
# mandatory build flags
CXXFLAGS = -O2 -Werror -std=c++11
# mandatory link flags
AM_LDFLAGS = -Wl,-as-neeeded
output: main.o quote.o trade.o signal.o
    ${CXX} ${AM_LDFLAGS} ${LDFLAGS} $(filter %.o,$^) -o $@
%: %.cpp
    ${CXX} ${AM_CXXFLAGS} ${CXXFLAGS} $< -c -o $@
quote.o: quote.cpp quote.h
trade.o: trade.cpp trade.h
signal.o: signal.cpp signal.h

当我运行生成文件时,我收到错误:

错误:#error 此文件需要 -std=c++11 或 -std=gnu++11 编译器选项。

然后,出现许多需要 C++11 支持的错误。例如,std::stringstd::chrono 存在问题。我该如何解决这个问题?我要求有人修复代码。由于我今天刚开始学习MakeFile,我很可能不会理解您的技术建议。请帮忙。非常感谢!

编辑:按照以下建议操作后,我修复了上述错误。我现在收到以下错误:

g++ -02 -Werror -std=c++11 -c -o main.o main.cpp

g++ -02 -Werror -std=c++11 -c -o quote.o quote.cpp

g++ -02 -werror -std=c++11 -c -o trade.o trade.cpp

g++ -Wl, -as-need main.o quote.o trade.o signal.o -o output

/

usr/bin/ld:无法识别 - 选项"需要"

collect2:错误:ld 返回 1 个退出状态

AM_CXXFLAGS

automake使用。您没有使用automake,因此这没有任何作用。

将所有编译器标志仅放入CXXFLAGS