所以,我正在运行CPU调度模拟代码,但在编译时遇到了一些错误
doAction
我不明白为什么我会收到这些错误,Undefined first referenced
symbol in file
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) /var/tmp//ccz0ct2G.o
std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&)) /var/tmp//ccz0ct2G.o
std::cout /var/tmp//ccz0ct2G.o
std::basic_ofstream<char, std::char_traits<char> >::close() /var/tmp//ccz0ct2G.o
std::ios_base::Init::~Init() /var/tmp//ccz0ct2G.o
std::ios_base::Init::Init() /var/tmp//ccz0ct2G.o
std::basic_ios<char, std::char_traits<char> >::operator!() const /var/tmp//ccz0ct2G.o
__gxx_personality_v0 /var/tmp//ccz0ct2G.o
std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*) /var/tmp//ccz0ct2G.o
std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(char const*, std::_Ios_Openmode) /var/tmp//ccz0ct2G.o
std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&) /var/tmp//ccz0ct2G.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
是什么?
几乎所有的错误都有它。
答案 0 :(得分:1)
我不明白为什么我会收到这些错误
您的程序尝试使用外部库或不同目标文件的一部分,但您也不会将其传递给链接器。
什么是/var/tmp//ccz0ct2G.o?
临时目标文件,包含将在编译过程的后续阶段使用的中间数据。
让我猜一下:您尝试使用类似
的命令进行编译g++ somesource.cc
你看,编译包括几个阶段:
1. compiling the individual source files (`*.c`, `*.cc` and so on) into *object files* (`*.o`).
2. linking the produced object files together into the actual program or library
当您像调用编译器一样调用编译器时,这是一种速记,可以通过单个调用执行两个操作。但是为了简单起见并且因为目标文件可能变得相当大并且它可能会将它们全部保存在内存中,所以编译源文件的结果被放入临时目标文件中。这就是你在那里所拥有的。