I'm just learning C++ and I'm trying to compile a very simple program.
I've tried looking around the web and I have no idea what's wrong or why the error is saying that I have undefined references to various variables.
I'm using the g++ compiler on Linux.
Here is the code:
#include <iostream>
using namespace std;
int main()
{
double celsius_temp, fahrenheit_temp;
cout << "Input celsius temp:";
cin >> celsius_temp;
fahrenheit_temp = (celsius_temp * 1.8) + 32;
cout << "Fahrenheit temp is:" << fahrenheit_temp;
return 0;
}
Here was the command entered and the error:
$ gcc convert.cpp -o convert
/tmp/ccTjTVCH.o: In function `main':
convert.cpp:(.text+0x1d): undefined reference to `std::cout'
convert.cpp:(.text+0x22): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
convert.cpp:(.text+0x2e): undefined reference to `std::cin'
convert.cpp:(.text+0x33): undefined reference to `std::istream::operator>>(double&)'
convert.cpp:(.text+0x5f): undefined reference to `std::cout'
convert.cpp:(.text+0x64): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
convert.cpp:(.text+0x7c): undefined reference to `std::ostream::operator<<(double)'
/tmp/ccTjTVCH.o: In function `__static_initialization_and_destruction_0(int, int)':
convert.cpp:(.text+0xbe): undefined reference to `std::ios_base::Init::Init()'
convert.cpp:(.text+0xcd): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
Compile usingg++ instead of gcc. The errors are linker errors(It cannot find the function references). gcc can also compile cpp but it is complicated
Related
This question already has answers here:
What is the difference between g++ and gcc?
(10 answers)
Closed last year.
I am exploring vscode. when i am building file with gcc then is is throwing error while with g++ it is successfull.can anyone explain the reason.below is with g++
Starting build...
C:\MinGW\bin\g++.exe -fdiagnostics-color=always -g "C:\Users\Nikhil Kumar\VS Project\DSA_Practice\kadane.cpp" -o "C:\Users\Nikhil Kumar\VS Project\DSA_Practice\kadane.exe"
Build finished successfully...while below is with gcc
Starting build...
C:/MinGW/bin/gcc.exe -fdiagnostics-color=always -g "C:\Users\Nikhil Kumar\VS Project\DSA_Practice\kadane.cpp" -o "C:\Users\Nikhil Kumar\VS Project\DSA_Practice\kadane.exe"
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\NIKHIL~1\AppData\Local\Temp\ccsbjjAr.o: in function main': C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:6: undefined reference to std::cout'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:6: undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:7: undefined reference to std::cin'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:7: undefined reference to std::istream::operator>>(int&)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:9: undefined reference to std::cout'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:9: undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:11: undefined reference to std::cin'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:11: undefined reference to std::istream::operator>>(int&)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:22: undefined reference to std::cout'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:22: undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:22: undefined reference to std::ostream::operator<<(int)'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:22: undefined reference to std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:/Users/Nikhil Kumar/VS Project/DSA_Practice/kadane.cpp:22: undefined reference to std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\NIKHIL~1\AppData\Local\Temp\ccsbjjAr.o: in function _tcf_0': c:/mingw/lib/gcc/mingw32/9.2.0/include/c++/iostream:74: undefined reference to std::ios_base::Init::~Init()'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\NIKHIL~1\AppData\Local\Temp\ccsbjjAr.o: in function _static_initialization_and_destruction_0': c:/mingw/lib/gcc/mingw32/9.2.0/include/c++/iostream:74: undefined reference to std::ios_base::Init::Init()'
collect2.exe: error: ld returned 1 exit status
Build finished with error(s).
can anyone explain what's going on?
gcc is not the c compiler, it is "gnu compiler collection". As this, calling gcc with a cpp file will call internally the g++ to compile the file. But as a result you get a *.o file. And now you link all the stuff with the gcc-c-compiler. This is possible at all, but it did not link to the c++stdlib.so/a file. If you link with gcc you need to manually add c++stdlib. But it is highly recommended to use g++ for compile AND link!
This question already has answers here:
What is an undefined reference/unresolved external symbol error and how do I fix it?
(39 answers)
Error "undefined reference to 'std::cout'"
(6 answers)
Closed 6 years ago.
So I was trying out the Linux C++ compiler and this happened while compiling the following code:
#include <iostream>
using namespace std;
int main(){
cout<<"Hello World!\n"<<endl;
return 0;
}
ceibal#ceibal:~$ gcc HelloWorld.cpp
/tmp/cc78Dkhk.o: In function `main':
HelloWorld.cpp:(.text+0xa): undefined reference to `std::cout'
HelloWorld.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
HelloWorld.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
HelloWorld.cpp:(.text+0x1c): undefined reference to `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> >&))'
/tmp/cc78Dkhk.o: In function `__static_initialization_and_destruction_0(int, int)':
HelloWorld.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
HelloWorld.cpp:(.text+0x4f): undefined reference to `std::ios_base::Init::~Init()'
collect2: ld devolvió el estado de salida 1
ceibal#ceibal:~$ pico HelloWorld.cpp
ceibal#ceibal:~$ gcc HelloWorld.cpp
HelloWorld.cpp:3:1: error: expected ‘;’ before ‘int’
ceibal#ceibal:~$ pico HelloWorld.cpp
ceibal#ceibal:~$ gcc HelloWorld.cpp
/tmp/ccIivRal.o: In function `main':
HelloWorld.cpp:(.text+0xa): undefined reference to `std::cout'
HelloWorld.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
HelloWorld.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
HelloWorld.cpp:(.text+0x1c): undefined reference to `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> >&))'
/tmp/ccIivRal.o: In function `__static_initialization_and_destruction_0(int, int)':
HelloWorld.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
HelloWorld.cpp:(.text+0x4f): undefined reference to `std::ios_base::Init::~Init()'
collect2: ld devolvió el estado de salida 1
I tried with the same program but on C and it worked perfectly, but as soon as I translated it to c++ this occurred.
$ gcc HelloWorld.cpp
This invokes C compiler but your code is in C++. Use g++ to invoke C++ compiler.
$ g++ HelloWorld.cpp
This question already has answers here:
Compiling a C++ program with GCC
(9 answers)
Closed 6 years ago.
I have just switched to elementary os and installed sublime text editor. i wrote a basic hello world program in c++ to check the working. And I get this error.
/tmp/cc3Pmvft.o: In function `main':
source.cpp:(.text+0xa): undefined reference to `std::cout'
source.cpp:(.text+0xf): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
source.cpp:(.text+0x14): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
source.cpp:(.text+0x1c): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/cc3Pmvft.o: In function `__static_initialization_and_destruction_0(int, int)':
source.cpp:(.text+0x4a): undefined reference to `std::ios_base::Init::Init()'
source.cpp:(.text+0x59): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
The hello world program was,
#include <iostream>
using namespace std;
int main(){
cout << "Hello World!" << endl;
return 0;
}
I have searched for answer in google and stackoverflow but couldn't find a solution.
You should compile it with C++ compiler, not C, g++ for example.
Instead of this
gcc source.cpp
do this
g++ source.cpp
Im learning c++ and am a noob at it any help would be nice. :)
please
This is a text based rpg that im messing with. Making a rpg is a great way to learn a language. But any help would be appreciated.
#include <iostream>
using namespace std;
int main()
{
int health, armor, damage;
health = 100;
armor = 0;
damage = 5;// This is a dynamic var for desision making
int loopcon = 1;
int decision = 1;
cout << "You enter the forest and have no idea what has happened and your head hurts.\n";
cout << "You are trying to remember whaT happened to you and how you ended up here but you cant.\n";
cout << "You see a town would you like to explore it?";
cout << "What is your name?";
while (loopcon == 1) {
cout << "1/0";
cin >> decision;
if (decision == 1)
cout << "You enter the city";
if (decision == 0)
cout << "Theres also a forsest want to export that?";
else
cout << "try useing caps";
}
return 0;
}
when I run this is get a big long error any ideas?
sudo gcc maingame.cpp
/tmp/cca53Qhv.o: In function `main':
maingame.cpp:(.text+0x31): undefined reference to `std::cout'
maingame.cpp:(.text+0x36): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0x40): undefined reference to `std::cout'
maingame.cpp:(.text+0x45): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0x4f): undefined reference to `std::cout'
maingame.cpp:(.text+0x54): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0x5e): undefined reference to `std::cout'
maingame.cpp:(.text+0x63): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0x6f): undefined reference to `std::cout'
maingame.cpp:(.text+0x74): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0x80): undefined reference to `std::cin'
maingame.cpp:(.text+0x85): undefined reference to `std::istream::operator>>(int&)'
maingame.cpp:(.text+0x97): undefined reference to `std::cout'
maingame.cpp:(.text+0x9c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0xad): undefined reference to `std::cout'
maingame.cpp:(.text+0xb2): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
maingame.cpp:(.text+0xbe): undefined reference to `std::cout'
maingame.cpp:(.text+0xc3): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
/tmp/cca53Qhv.o: In function `__static_initialization_and_destruction_0(int, int)':
maingame.cpp:(.text+0xf7): undefined reference to `std::ios_base::Init::Init()'
maingame.cpp:(.text+0x106): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
You commented out the standard namespace... Change
//using namespace std;
to
using namespace std;
Edit: your compiler is telling you exactly what's wrong... It can't find a reference to the std namespace functions because you haven't declared it. But note that it is bad practice to be declaring it globally. When you gain more familiarity with the language you should be declaring the namespace manually using the scope resultion :: operator.
Obviously you commented using namespace std; but kept using some of its references (cout and cin) without explicitly stating which namespace they come from (eq std::cout).
Solution:
Add std:: to all your couts and cins because using “using namespace std” in C++ is considered bad practice
So I have a vector of arrays of pointers to floats. I am trying to push back an array of null pointers of type float*. When I do, I get an error which I will post at the end. Here is teh code:
#include <iostream>
#include <math.h>
#include <vector>
#include <tr1/array>
using namespace std;
typedef vector< tr1::array<float* , 2> > polygon;
void triangle_solver(float*,float*,float*,float*,float*,float*);//Prototype function for solving triangles, 6 floats for 3 sides and 3 angles
void polygon_solver(polygon poly);
void displayPoly(polygon);
int main()
{
polygon test;
cout << test.size() << endl;
//polygon_solver(test);
return 0;
}
void displayPoly(polygon poly)
{
for (polygon::iterator it = poly.begin(); it != poly.end(); it++)
{
for (int c=0; c<2; c++)
{
if ((*it)[c]) cout << *(*it)[c] << endl;
else cout << '?' << endl;
}
}
}
void polygon_solver(polygon poly)
{
if (poly.size() > 3)
{
float *a1 = NULL;
float *a3 = NULL;
float *s2 = NULL;
polygon sub(poly.begin()+2, poly.end()-1);
float *A1 = NULL;
float *A3 = NULL;
float *S2 = NULL;
sub.push_back({A1, S2}); //ERROR HERE
float *aA3 = poly[2][1];
float *aA1 = poly[0][1];
cout << "Sub Polygon: " << endl;
displayPoly(sub); cout << endl;
for (int c=0; c<1; c++)
{
triangle_solver(a1, poly[1][1], a3, poly[1][0], s2, poly[0][1]);
polygon_solver(sub);
}
cout << "Polygon: " << endl;
displayPoly(poly); cout << endl;
}
}
I am using NULL to represent unknowns (is this standard?) Note that it compiles in code blocks but does not run, and also will not compile by running gcc at the command line. Here is the error:
main.cpp: In function ‘void polygon_solver(polygon)’:
main.cpp:45:23: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
sub.push_back({A1, S2});
^
main.cpp:45:31: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
sub.push_back({A1, S2});
^
/tmp/ccZsz9el.o: In function `main':
main.cpp:(.text+0x25): undefined reference to `std::cout'
main.cpp:(.text+0x2a): undefined reference to `std::ostream::operator<<(unsigned long)'
main.cpp:(.text+0x2f): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x37): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccZsz9el.o: In function `displayPoly(std::vector<std::tr1::array<float*, 2ul>, std::allocator<std::tr1::array<float*, 2ul> > >)':
main.cpp:(.text+0xf4): undefined reference to `std::cout'
main.cpp:(.text+0xf9): undefined reference to `std::ostream::operator<<(float)'
main.cpp:(.text+0xfe): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x106): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
main.cpp:(.text+0x112): undefined reference to `std::cout'
main.cpp:(.text+0x117): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char)'
main.cpp:(.text+0x11c): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x124): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccZsz9el.o: In function `polygon_solver(std::vector<std::tr1::array<float*, 2ul>, std::allocator<std::tr1::array<float*, 2ul> > >)':
main.cpp:(.text+0x2f5): undefined reference to `std::cout'
main.cpp:(.text+0x2fa): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
main.cpp:(.text+0x2ff): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x307): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
main.cpp:(.text+0x343): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x348): undefined reference to `std::cout'
main.cpp:(.text+0x34d): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
main.cpp:(.text+0x431): undefined reference to `std::cout'
main.cpp:(.text+0x436): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
main.cpp:(.text+0x43b): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x443): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
main.cpp:(.text+0x476): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
main.cpp:(.text+0x47b): undefined reference to `std::cout'
main.cpp:(.text+0x480): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
/tmp/ccZsz9el.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x555): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x564): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccZsz9el.o: In function `std::vector<std::tr1::array<float*, 2ul>, std::allocator<std::tr1::array<float*, 2ul> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<std::tr1::array<float*, 2ul>*, std::vector<std::tr1::array<float*, 2ul>, std::allocator<std::tr1::array<float*, 2ul> > > >, std::tr1::array<float*, 2ul> const&)':
main.cpp:(.text._ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_[_ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_]+0x271): undefined reference to `__cxa_end_catch'
main.cpp:(.text._ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_[_ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_]+0x284): undefined reference to `__cxa_begin_catch'
main.cpp:(.text._ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_[_ZNSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE13_M_insert_auxEN9__gnu_cxx17__normal_iteratorIPS3_S5_EERKS3_]+0x2ec): undefined reference to `__cxa_rethrow'
/tmp/ccZsz9el.o: In function `std::vector<std::tr1::array<float*, 2ul>, std::allocator<std::tr1::array<float*, 2ul> > >::_M_check_len(unsigned long, char const*) const':
main.cpp:(.text._ZNKSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE12_M_check_lenEmPKc[_ZNKSt6vectorINSt3tr15arrayIPfLm2EEESaIS3_EE12_M_check_lenEmPKc]+0x4c): undefined reference to `std::__throw_length_error(char const*)'
/tmp/ccZsz9el.o: In function `__gnu_cxx::new_allocator<std::tr1::array<float*, 2ul> >::deallocate(std::tr1::array<float*, 2ul>*, unsigned long)':
main.cpp:(.text._ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE10deallocateEPS4_m[_ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE10deallocateEPS4_m]+0x1c): undefined reference to `operator delete(void*)'
/tmp/ccZsz9el.o: In function `__gnu_cxx::new_allocator<std::tr1::array<float*, 2ul> >::allocate(unsigned long, void const*)':
main.cpp:(.text._ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE8allocateEmPKv]+0x2c): undefined reference to `std::__throw_bad_alloc()'
main.cpp:(.text._ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorINSt3tr15arrayIPfLm2EEEE8allocateEmPKv]+0x3c): undefined reference to `operator new(unsigned long)'
/tmp/ccZsz9el.o:(.eh_frame+0x4b): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status
Your error log points out a warning, and a linkage error.
1) Your 2 first warnings says that your are using c++11 features, while not specifying to compile with c++11 standart. Warnings does not stop the compilation, unless you use the -Werror flag. But you should still fix them by adding -std=c++11 in your compilation line.
2) Your linkage error simply tells you that linker couldn't find std::cout. That is because gcc does not link correctly the C++'s std library. Add this flag : -lstdc++, or use g++ instead (source : Compiling a C++ program with gcc)