{"id":108,"date":"2008-09-18T17:25:36","date_gmt":"2008-09-18T22:25:36","guid":{"rendered":"http:\/\/brianschettler.com\/blog\/?p=108"},"modified":"2008-09-18T17:26:43","modified_gmt":"2008-09-18T22:26:43","slug":"the-same-mistakes","status":"publish","type":"post","link":"https:\/\/brianschettler.com\/blog\/?p=108","title":{"rendered":"The same mistakes"},"content":{"rendered":"<p>About every semester I make the same mistake, and I usually waste 30 minutes to an hour to try and figure it out. When I do, I feel like an idiot. So I&#8217;m writing this in hopes that I&#8217;ll remember next time.<\/p>\n<p>Every semester I&#8217;ll have a program to turn in, and I&#8217;ll have to compile it on the school UNIX server to turn in. When we get our preference of language, I usually choose C++. I open up Visual Studio and write my program, debug it and get it all working. I try to keep everything very general and remove all Microsoft-specific code. Then I FTP it to the UNIX server and try to compile:<\/p>\n<blockquote>\n<pre># gcc prog1hw.c\r\nUndefined\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 first referenced\r\n symbol\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 in file\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string[in-charge](std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::operator=(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::append(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string[in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::~basic_string [in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::operator+=(char)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::eof() const\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::basic_string[in-charge](char const*, std::allocator&lt;char&gt; const&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::open(char const*, std::_Ios_Openmode)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::~basic_fstream [in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::basic_fstream[in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_istream&lt;char, std::char_traints&lt;char&gt; &gt;::ignore(int, int)\/var\/tmp\/\/ccNHY1WB.o\r\n std::allocator&lt;char&gt;::~allocator [in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::allocator&lt;char&gt;::allocator[in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::length() const\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::at(unsigned)\/var\/tmp\/\/ccNHY1WB.o\r\n std::cout\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_ios&lt;char, std::char_traits&lt;char&gt; &gt;::clear(std::_Ios_Iostate)\/var\/tmp\/\/ccNHY1WB.o\r\n std::ios_base::Init::~Init [in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n std::ios_base::Init::Init[in-charge]()\/var\/tmp\/\/ccNHY1WB.o\r\n __gxx_personality_v0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_istream&lt;char, std::char_traints&lt;char&gt; &gt;::get()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::close()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::getline&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_istream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_fstream&lt;char, std::char_traits&lt;char&gt; &gt;::is_open()\/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;::insert(unsigned, char const*)\/var\/tmp\/\/ccNHY1WB.o\r\n std::cin\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/tmp\/\/ccNHY1WB.o\r\n std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::operator&lt;&lt; &lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)\/var\/tmp\/\/ccNHY1WB.o\r\n ld: fatal: Symbol referencing errors. No output written to a.out\r\n collect2: ld returned 1 exit status<\/pre>\n<\/blockquote>\n<p>What strange stuff is this? It looks like something isn&#8217;t being included correctly. Okay&#8230;so I go back and start changing stuff. Do I need to add .h on my includes? No, same error. Do I need a newline at the end of the file? No. Maybe I didn&#8217;t FTP it correctly&#8230;maybe I used binary mode instead of ASCII mode. Nope. Is there something with the compiler? Maybe I need to try a certain switch&#8230;after 20 minutes of reading man pages&#8230;nope. It&#8217;s not finding the string class&#8230;have they removed the string class for some reason? What&#8217;s going on here?!? And I spend about 30 minutes to an hour trying to figure it out until I realize&#8230;<\/p>\n<p>I&#8217;m using gcc instead of g++. I&#8217;m using a C compiler for a C++ program. Do&#8217;h! And I KNOW why I do this, it&#8217;s because when I first had any real interaction in a UNIX environment at Cameron University, they set up a symbolic link so gcc was really calling g++. So whenever I want to compile a C++ program in a UNIX environment, I always go for gcc first. ARGH.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>About every semester I make the same mistake, and I usually waste 30 minutes to an hour to try and figure it out. When I do, I feel like an idiot. So I&#8217;m writing this in hopes that I&#8217;ll remember next time. Every semester I&#8217;ll have a program to turn in, and I&#8217;ll have to [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[24,4,114],"tags":[223,222,225,82,17,224],"_links":{"self":[{"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108"}],"collection":[{"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=108"}],"version-history":[{"count":3,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":111,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions\/111"}],"wp:attachment":[{"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brianschettler.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}