使用make命令时编译错误

时间:2020-08-08 00:02:36

标签: c++ makefile cmake

我编写了以下makefile来编译我的C ++ 11程序:

CC=/usr/local/bin/gcc
CXX=/usr/local/bin/g++
EXEC = gcalc
OBJS = main.o Calculator.o Edge.o Graph.o Exception.o utilities.o
DEBUG_FLAG = -DNDEBUG
COMP_FLAG = -std=c++11 -Wall -Werror -pedantic-errors
$(EXEC) : $(OBJS)
    $(CC) $(DEBUG_FLAG) $(OBJS) -o $@
main.o: main.cpp Calculator.h Graph.h Exception.h Edge.h utilities.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.cpp
Calculator.o: Calculator.cpp Calculator.h Graph.h Exception.h Edge.h utilities.h
    $(CC) -c $(DEBUG_FLAG) $(COMP_FLAG) $*.cpp
//And others...
tar:
    tar -czvf archive.tgz Makefile gcalc.zip
clean:
    rm -f $(OBJS) $(EXEC)

当我这样编译程序时,一切正常:

/usr/local/bin/g++ -std=c++11 -Wall -Werror -pedantic-errors -DNDEBUG main.cpp utilities.cpp utilities.h Graph.cpp Graph.h Exception.cpp Exception.h Edge.cpp Edge.h Calculator.cpp Calculator.h -o final

但是当我输入make时,我得到数以万计的错误,例如:

Calculator.cpp:(.text._ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE]+0x77): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data() const'
Calculator.cpp:(.text._ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE]+0x86): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const'
Calculator.cpp:(.text._ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE[_ZNSt8__detail15_BracketMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0EE24_M_add_equivalence_classERKNS1_12basic_stringIcSt11char_traitsIcESaIcEEE]+0x95): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::data() const'
utilities.o:(.eh_frame+0x6b): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
make: *** [gcalc] Error 1

我该如何解决?

0 个答案:

没有答案