mirror of
https://github.com/opencv/opencv.git
synced 2025-01-18 14:13:15 +08:00
Merge pull request #506 from asmorkalov:crosscompile_tutorial
This commit is contained in:
commit
dfbd5f6a02
@ -10,3 +10,4 @@
|
||||
.. |Author_AlexB| unicode:: Alexandre U+0020 Benoit
|
||||
.. |Author_EricCh| unicode:: Eric U+0020 Christiansen
|
||||
.. |Author_AndreyP| unicode:: Andrey U+0020 Pavlenko
|
||||
.. |Author_AlexS| unicode:: Alexander U+0020 Smorkalov
|
||||
|
@ -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.
|
@ -3,7 +3,9 @@
|
||||
Introduction to OpenCV
|
||||
-----------------------------------------------------------
|
||||
|
||||
Here you can read tutorials about how to set up your computer to work with the OpenCV library. Additionaly you can find a few very basic sample source code that will let introduce you to the world of the OpenCV.
|
||||
Here you can read tutorials about how to set up your computer to work with the OpenCV library.
|
||||
Additionally you can find a few very basic sample source code that will let introduce you to the
|
||||
world of the OpenCV.
|
||||
|
||||
.. include:: ../../definitions/tocDefinitions.rst
|
||||
|
||||
@ -189,6 +191,24 @@ Here you can read tutorials about how to set up your computer to work with the O
|
||||
.. |Install_iOS| image:: images/opencv_ios.png
|
||||
:width: 90pt
|
||||
|
||||
* **Embedded Linux**
|
||||
|
||||
.. tabularcolumns:: m{100pt} m{300pt}
|
||||
.. cssclass:: toctableopencv
|
||||
|
||||
=========== ======================================================
|
||||
|Usage_1| **Title:** :ref:`ARM-Linux-cross-compile`
|
||||
|
||||
*Compatibility:* > OpenCV 2.4.4
|
||||
|
||||
*Author:* |Author_AlexS|
|
||||
|
||||
We will learn how to setup OpenCV cross compilation environment for ARM Linux.
|
||||
|
||||
=========== ======================================================
|
||||
|
||||
* **Common**
|
||||
|
||||
.. tabularcolumns:: m{100pt} m{300pt}
|
||||
.. cssclass:: toctableopencv
|
||||
|
||||
@ -249,7 +269,7 @@ Here you can read tutorials about how to set up your computer to work with the O
|
||||
|
||||
\pagebreak
|
||||
|
||||
.. We use a custom table of content format and as the table of content only imforms Sphinx about the hierarchy of the files, no need to show it.
|
||||
.. We use a custom table of content format and as the table of content only informs Sphinx about the hierarchy of the files, no need to show it.
|
||||
.. toctree::
|
||||
:hidden:
|
||||
|
||||
@ -263,6 +283,7 @@ Here you can read tutorials about how to set up your computer to work with the O
|
||||
../android_binary_package/O4A_SDK
|
||||
../android_binary_package/dev_with_OCV_on_Android
|
||||
../ios_install/ios_install
|
||||
../crosscompilation/arm_crosscompile_with_cmake
|
||||
../display_image/display_image
|
||||
../load_save_image/load_save_image
|
||||
../how_to_write_a_tutorial/how_to_write_a_tutorial
|
||||
|
Loading…
Reference in New Issue
Block a user