当我使用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] 删除。
我来说两句