title: Trouble with cross-compiling an c++ openCV application for the beaglebone black
body: <p>I hoping somebody has a quick solution because I'm getting a tiny, weeny bit frustrated.
  I'm trying to cross-compile an openCV application for my Beaglebone Black (BBB) on my Linux Ubuntu 14.04 computer.
  I installed the cross compilers: arm-linux-gnueabihf-gcc-4.8 en arm-linux-gnueabihf-g++-4.8. cross . These work when I compile a simple c++ program without linking to 3th party libs, like openCV.</p>
  
  <p>Because I want to compile for my BBB I mounted (samba) my beaglebone in the folder /mnt/BBB/ on my linux computer. And I tried the following code (which is a copy of <a href="http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html" rel="nofollow">http://docs.opencv.org/doc/tutorials/introduction/linux_gcc_cmake/linux_gcc_cmake.html</a> )</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #include &lt;opencv2/opencv.hpp&gt;
  
  using namespace cv;
  
  int main(int argc, char** argv )
  {
      if ( argc != 2 )
      {
          printf("usage: DisplayImage.out &lt;Image_Path&gt;\n");
          return -1;
      }
  
      Mat image;
      image = imread( argv[1], 1 );
  
      if ( !image.data )
      {
          printf("No image data \n");
          return -1;
      }
      namedWindow("Display Image", 1 );
      imshow("Display Image", image);
  
      waitKey(0);
  
      return 0;
  }
  </code></pre>
  
  <p>With the following command: </p>
  
  <pre><code>arm-g++ -I/mnt/BBB/usr/local/include -I/mnt/BBB/usr/local/include/opencv -L/mnt/BBB/usr/local/lib  -lopencv_calib3d -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_shape -lopencv_stitching     -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videoio -lopencv_videostab main.cpp -o main
  </code></pre>
  
  <p>But I receive the following error:</p>
  
  <pre><code>/tmp/ccX4FOL8.o: In function `main':
  main.cpp:(.text+0x4c): undefined reference to `cv::imread(cv::String const&amp;, int)'
  main.cpp:(.text+0xa6): undefined reference to `cv::namedWindow(cv::String const&amp;, int)'
  main.cpp:(.text+0xe2): undefined reference to `cv::imshow(cv::String const&amp;, cv::_InputArray const&amp;)'
  main.cpp:(.text+0xfc): undefined reference to `cv::waitKey(int)'
  /tmp/ccX4FOL8.o: In function `cv::String::String(char const*)':
  main.cpp:(.text._ZN2cv6StringC2EPKc[_ZN2cv6StringC5EPKc]+0x2a): undefined reference to `cv::String::allocate(unsigned int)'
  /tmp/ccX4FOL8.o: In function `cv::String::~String()':
  main.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0xa): undefined reference to `cv::String::deallocate()'
  /tmp/ccX4FOL8.o: In function `cv::_InputArray::_InputArray(cv::Mat const&amp;)':
  main.cpp:(.text._ZN2cv11_InputArrayC2ERKNS_3MatE[_ZN2cv11_InputArrayC5ERKNS_3MatE]+0x34): undefined reference to `vtable for cv::_InputArray'
  /tmp/ccX4FOL8.o: In function `cv::_InputArray::~_InputArray()':
  main.cpp:(.text._ZN2cv11_InputArrayD2Ev[_ZN2cv11_InputArrayD5Ev]+0x24): undefined reference to `vtable for cv::_InputArray'
  /tmp/ccX4FOL8.o: In function `cv::Mat::~Mat()':
  main.cpp:(.text._ZN2cv3MatD2Ev[_ZN2cv3MatD5Ev]+0x20): undefined reference to `cv::fastFree(void*)'
  /tmp/ccX4FOL8.o: In function `cv::Mat::operator=(cv::Mat const&amp;)':
  main.cpp:(.text._ZN2cv3MataSERKS0_[_ZN2cv3MataSERKS0_]+0xb4): undefined reference to `cv::Mat::copySize(cv::Mat const&amp;)'
  /tmp/ccX4FOL8.o: In function `cv::Mat::release()':
  main.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x3e): undefined reference to `cv::Mat::deallocate()'
  collect2: error: ld returned 1 exit status
  </code></pre>
  
  <p>Can somebody tell me what I'm doing wrong? Or what could be done better?</p>
  
  <p>Thank you</p>