mirror of https://github.com/opencv/opencv.git
parent
39baa2237e
commit
637b48eec8
3 changed files with 139 additions and 2 deletions
@ -0,0 +1,115 @@ |
||||
|
||||
.. _ARM-Linux-cross-compile: |
||||
|
||||
Cross compilation for ARM based Linux systems |
||||
********************************************* |
||||
|
||||
This steps are tested on Ubuntu Linux 12.04, but should work for other Linux distributions. |
||||
I case of other distributions package names and names of cross compilation tools may differ. |
||||
There are several popular EABI versions that are used on ARM platform. This tutorial is |
||||
written for *gnueabi* and *gnueabihf*, but other variants should work with minimal changes. |
||||
|
||||
|
||||
Prerequisites |
||||
============= |
||||
|
||||
* Host computer with Linux; |
||||
* Git; |
||||
* CMake 2.6 or higher; |
||||
* Cross compilation tools for ARM: gcc, libstc++, etc. Depending on target platform you need |
||||
to choose *gnueabi* or *gnueabihf* tools. |
||||
Install command for *gnueabi*: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
sudo apt-get install gcc-arm-linux-gnueabi |
||||
|
||||
Install command for *gnueabihf*: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
sudo apt-get install gcc-arm-linux-gnueabihf |
||||
|
||||
* pkgconfig; |
||||
* Python 2.6 for host system; |
||||
* [optional] ffmpeg or libav development packages for armeabi(hf): libavcodec-dev, libavformat-dev, libswscale-dev; |
||||
* [optional] GTK+2.x or higher, including headers (libgtk2.0-dev) for armeabi(hf); |
||||
* [optional] libdc1394 2.x; |
||||
* [optional] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev for armeabi(hf). |
||||
|
||||
|
||||
Getting OpenCV Source Code |
||||
========================== |
||||
|
||||
You can use the latest stable OpenCV version available in *sourceforge* or you can grab the latest |
||||
snapshot from our `Git repository <https://github.com/Itseez/opencv.git>`_. |
||||
|
||||
|
||||
Getting the Latest Stable OpenCV Version |
||||
---------------------------------------- |
||||
|
||||
* Go to our `page on Sourceforge <http://sourceforge.net/projects/opencvlibrary>`_; |
||||
|
||||
* Download the source tarball and unpack it. |
||||
|
||||
|
||||
Getting the Cutting-edge OpenCV from the Git Repository |
||||
------------------------------------------------------- |
||||
|
||||
Launch Git client and clone `OpenCV repository <http://github.com/itseez/opencv>`_ |
||||
|
||||
In Linux it can be achieved with the following command in Terminal: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
cd ~/<my_working _directory> |
||||
git clone https://github.com/Itseez/opencv.git |
||||
|
||||
|
||||
Building OpenCV |
||||
=============== |
||||
|
||||
#. Create a build directory, make it current and run the following command: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
cmake [<some optional parameters>] -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory> |
||||
|
||||
Toolchain uses *gnueabihf* EABI convention by default. Add ``-DSOFTFP=ON`` cmake argument to switch on softfp compiler. |
||||
|
||||
.. code-block:: bash |
||||
|
||||
cmake [<some optional parameters>] -DSOFTFP=ON -DCMAKE_TOOLCHAIN_FILE=<path to the OpenCV source directory>/platforms/linux/arm-gnueabi.toolchain.cmake <path to the OpenCV source directory> |
||||
|
||||
For example: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
cd ~/opencv/platforms/linux |
||||
mkdir -p build_hardfp |
||||
cd build_hardfp |
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../arm-gnueabi.toolchain.cmake ../../.. |
||||
|
||||
#. Run make in build (<cmake_binary_dir>) directory: |
||||
|
||||
.. code-block:: bash |
||||
|
||||
make |
||||
|
||||
.. note:: |
||||
|
||||
Optionally you can strip symbols info from the created library via install/strip make target. |
||||
This option produces smaller binary (~ twice smaller) but makes further debugging harder. |
||||
|
||||
Enable hardware optimizations |
||||
----------------------------- |
||||
|
||||
Depending on target platfrom architecture different instruction sets can be used. By default |
||||
compiler generates code for armv5l without VFPv3 and NEON extensions. Add ``-DUSE_VFPV3=ON`` |
||||
to cmake command line to enable code generation for VFPv3 and ``-DUSE_NEON=ON`` for using |
||||
NEON SIMD extensions. |
||||
|
||||
TBB is supported on multi core ARM SoCs also. |
||||
Add ``-DWITH_TBB=ON`` and ``-DBUILD_TBB=ON`` to enable it. Cmake scripts download TBB sources |
||||
from official project site `<http://threadingbuildingblocks.org/>`_ and build it. |
Loading…
Reference in new issue