使用g ++从-c到-std = c ++ 11编译c ++

马曾

当我使用g ++ -c运行这些文件的代码时,没有任何错误,但是当我使用g ++ -std = c ++ 11运行它时,却出现了链接器错误。我假设这意味着错误不是在文件的代码中,而是在makefile中。我怎样才能解决这个问题?

parse: parse.o scan.o
    g++ -std=c++11 -Wall parse.o scan.o -o parse
    #g++ -o parse parse.o scan.o

clean:
    rm -f parse.o parse

parse.o: scanpp.h parse.cpp 
    #g++ -c parse.cpp
    g++ -std=c++11 parse.cpp

scan.o: scanpp.h scan.cpp 
    #g++ -c scan.cpp
    g++ -std=c++11 scan.cpp

这是我运行make时遇到的错误

#g++ -c parse.cpp
g++ -std=c++11 parse.cpp
Undefined symbols for architecture x86_64:
  "scan()", referenced from:
      match(token) in parse-405e06.o
      _main in parse-405e06.o
  "_token_image", referenced from:
      match(token) in parse-405e06.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [parse.o] Error 1
丹妮

-c表示仅运行编译器,而不运行链接器。如果您只想更改c ++版本,则在添加另一个标志时应保留该标志。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

C ++ 11:g ++-4.7内部编译器错误

使用C ++ 11期货:std :: async崩溃的嵌套调用:编译器/标准库错误?

用g ++编译C ++ 11

如何使用-std = c ++ 11解决g ++警告:不建议使用'auto_ptr'

带有std :: move和std :: make_move_iterator的C ++ 11编译错误

从C使用std :: atomic

如何判断库是使用C ++ 11编译的

如何使用自动工具使用clang和选项-std = c ++ 11编译项目

尝试使用g ++编译目标文件时出现“ -std = c ++ 11:找不到命令”错误

C ++编译错误:无法识别的命令行选项“ -std = c ++ 11”

使用GCC 4.8.5编译时C ++ 11 std :: this_thread :: sleep_until()挂起

Cython -std = c ++ 11错误,同时使用C和C ++

在Cygwin上使用-std = c ++ 11进行编译会隐藏可用的系统调用

c ++枚举范围无法使用-std = c ++ 98进行编译,但是使用-std = c ++ 11可以

g ++编译选项-std = c ++ 14编译错误,显示Werror = c ++ 11-compat

为什么g ++用-std = c ++ 11编译<algorithm>需要更长的时间?

C#字典到C ++ std :: map

我可以安全地混合使用-std = c ++ 11和-std = c ++ 14编译的库吗?

使用g ++ -std = c ++ 11使用模板创建静态库

如何强制g ++仅编译c ++ 11标准?

使用g ++ 8和c ++ 20的std :: async的编译问题

使用新的C ++ 11 std :: async加速std:.vector填充

使用g ++的C ++ XInput编译

-std = c ++ 11在g ++命令行中的位置

使用g ++或CC编译多个C ++文件

make对于g ++不使用-std = c ++ 11选项

编译器不会使用 -std=c++11 编译智能指针

使用 g++ 5.4 编译 C++11

std::vector 的 std:array 的 SFINAE 不能在 C++11 中编译