Skip to content

For Ubuntu

Sébastien Gallou edited this page Oct 21, 2023 · 44 revisions

Tested with Ubuntu 20.04 (05/09/2021)

Make sure you have g++ installed, and install dependencies

sudo apt-get install -y g++ libbz2-dev python3-dev wget build-essential libssl-dev autoconf automake libtool curl make g++ unzip libpcre3 libpcre3-dev libpq5 postgresql-server-dev-all git rpm zip libreadline-dev libffi-dev build-essential libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbbmalloc2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libudev-dev usbutils

Create a dev folder under $HOME/dev where you gonna put all yadoms dependencies

Cmake

wget --no-verbose https://github.com/Kitware/CMake/releases/download/v3.20.1/cmake-3.20.1.tar.gz \
	&& tar xzf cmake-3.20.1.tar.gz && cd cmake-3.20.1 \
	&& ./bootstrap && make && sudo make install

Boost

wget --no-verbose https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.bz2 \
	&& tar xjf boost_1_75_0.tar.bz2 && cd boost_1_75_0 \
	&& ./bootstrap.sh \
	&& ./b2 --with-atomic --with-chrono --with-date_time --with-filesystem --with-locale --with-regex --with-test --with-thread --with-json --with-system link=static runtime-link=static --no-samples --no-tests cxxflags=-fPIC \
	&& rm -Rf bin.v2 \
	&& rm -Rf doc \
	&& rm -Rf libs \
	&& rm -Rf tools

OpenSSL

Change <YOUR_PATH> by your path

wget --no-verbose https://www.openssl.org/source/openssl-1.1.1k.tar.gz \
	&& tar xzf openssl-1.1.1k.tar.gz && cd openssl-1.1.1k \
	&& ./Configure --prefix=<YOUR_PATH>/dev/openssl -fPIC linux-x86_64\
	&& make \
	&& sudo make install

Poco

wget --no-verbose https://pocoproject.org/releases/poco-1.9.4/poco-1.9.4-all.tar.gz \
	&& tar xzf poco-1.9.4-all.tar.gz && cd poco-1.9.4-all \
	&& echo 'STATICOPT_CC = -fPIC' >> build/config/Linux \
	&& echo 'STATICOPT_CXX = -fPIC' >> build/config/Linux \
	&& ./configure --static --config=Linux --no-samples --no-tests --omit=CppUnit,CppUnit/WinTestRunner,Data,Data/SQLite,Data/ODBCData/MySQL,MongoDB,PageCompiler,PageCompiler/File2Page --include-path=$HOME/dev/openssl/include --library-path=$HOME/dev/openssl/lib \
	&& make \
	&& cd .. \
	&& find . -name obj -type d -print0 | xargs -0 rm -rf

Protobuf

wget --no-verbose https://github.com/google/protobuf/releases/download/v3.15.8/protobuf-cpp-3.15.8.tar.gz \
	&& tar xzf protobuf-cpp-3.15.8.tar.gz && cd protobuf-3.15.8 \
	&& ./autogen.sh \
	&& ./configure --enable-shared=no --prefix=$HOME/dev/protobuf --with-pic \
	&& make \
	&& sudo make install \
	&& sudo ldconfig 

SWIG

wget --no-verbose http://prdownloads.sourceforge.net/swig/swig-4.0.2.tar.gz \
	&& tar xzf swig-4.0.2.tar.gz \
	&& cd swig-4.0.2 \
	&& ./configure \
	&& make \
	&& sudo make install \
	&& cd .. \
	&& rm -f swig-4.0.2/Source/Modules/*.o \
	&& rm -Rf swig-4.0.2/Examples \
	&& rm -Rf swig-4.0.2/Docs 

PostgreSQL (optional)

sudo apt-get install libpq5 postgresql-server-dev-all

Python 3

wget --no-verbose https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tgz  > /dev/null\
	&& tar xzf Python-3.9.4.tgz && rm Python-3.9.4.tgz  > /dev/null\
	&& cd Python-3.9.4 \
	&& ./configure --enable-shared --without-pymalloc --prefix=$HOME/dev/python3.9> /dev/null\
	&& make > /dev/null\
	&& sudo make install  > /dev/null

Python 2

On recent Ubuntu distro python is already installed.

You must install python-dev :

For python 2.x

sudo apt-get install python-dev

OpenCV (Optional)

Download OpenCV sources from here

Unzip the folder

cd opencv-<version>
mkdir build
cd build
cmake -DWITH_EIGEN:BOOL="0" -DWITH_IMGCODEC_HDR:BOOL="0" -DBUILD_opencv_ts:BOOL="0" -DBUILD_opencv_video:BOOL="0" -DWITH_TIFF:BOOL="0" -DBUILD_PACKAGE:BOOL="0" -DBUILD_opencv_features2d:BOOL="0" -DBUILD_ITT:BOOL="0" -Dthunder:BOOL="0" -Dlzw:BOOL="0" -DCV_TRACE:BOOL="0" -DWITH_MSMF:BOOL="0" -DWITH_FFMPEG:BOOL="0" -DWITH_IMGCODEC_PXM:BOOL="0" -DWITH_MSMF_DXVA:BOOL="0" -DCPACK_SOURCE_ZIP:BOOL="0" -Dpackbits:BOOL="0" -DBUILD_opencv_apps:BOOL="0" -DBUILD_PROTOBUF:BOOL="0" -DBUILD_opencv_objdetect:BOOL="0" -DBUILD_IPP_IW:BOOL="0" -DBUILD_opencv_videoio:BOOL="0" -DBUILD_PERF_TESTS:BOOL="0" -Dmdi:BOOL="0" -DWITH_1394:BOOL="0" -DINSTALL_PDB:BOOL="0" -DWITH_OPENCL:BOOL="0" -DM_LIBRARY:FILEPATH="M_LIBRARY-NOTFOUND" -DUSE_WIN32_FILEIO:BOOL="1" -DCPACK_SOURCE_7Z:BOOL="0" -DBUILD_opencv_stitching:BOOL="0" -Dccitt:BOOL="0" -DVIDEOIO_ENABLE_STRICT_PLUGIN_CHECK:BOOL="0" -DWITH_IPP:BOOL="0" -DBUILD_opencv_dnn:BOOL="0" -DWITH_ITT:BOOL="0" -DCPACK_BINARY_NSIS:BOOL="0" -DBUILD_opencv_photo:BOOL="0" -DBUILD_opencv_calib3d:BOOL="0" -DWITH_QUIRC:BOOL="0" -DWITH_WEBP:BOOL="0" -DBUILD_opencv_python_bindings_generator:BOOL="0" -DWITH_PROTOBUF:BOOL="0" -DBUILD_JASPER:BOOL="1" -DWITH_OPENCLAMDBLAS:BOOL="0" -DBUILD_JAVA:BOOL="0" -DWITH_VTK:BOOL="0" -DBUILD_opencv_java_bindings_generator:BOOL="0" -DBUILD_opencv_highgui:BOOL="0" -DWITH_ARITH_DEC:BOOL="0" -DWITH_IMGCODEC_SUNRASTER:BOOL="0" -DWITH_ADE:BOOL="0" -DBUILD_OPENEXR:BOOL="0" -DWITH_OPENEXR:BOOL="0" -DWITH_OPENCLAMDFFT:BOOL="0" -DVIDEOIO_ENABLE_PLUGINS:BOOL="0" -DWITH_DSHOW:BOOL="0" -DOPENCV_DNN_OPENCL:BOOL="0" -DWITH_LAPACK:BOOL="0" -DWITH_IMGCODEC_PFM:BOOL="0" -Dlogluv:BOOL="0" -DINSTALL_PDB_COMPONENT_EXCLUDE_FROM_ALL:BOOL="0" -DBUILD_opencv_ml:BOOL="0" -DOPENCV_ENABLE_MEMALIGN:BOOL="0" -DBUILD_opencv_python_tests:BOOL="0" -DCV_ENABLE_INTRINSICS:BOOL="0" -DOPENCL_FOUND:BOOL="0" -DWITH_OPENCL_D3D11_NV:BOOL="0" -Dnext:BOOL="0" -DBUILD_opencv_gapi:BOOL="0" -DBUILD_opencv_flann:BOOL="0" -DBUILD_TESTS:BOOL="0" -DWITH_DIRECTX:BOOL="0" -DCMAKE_BUILD_TYPE=DEBUG ..
make -j8
cmake -DWITH_EIGEN:BOOL="0" -DWITH_IMGCODEC_HDR:BOOL="0" -DBUILD_opencv_ts:BOOL="0" -DBUILD_opencv_video:BOOL="0" -DWITH_TIFF:BOOL="0" -DBUILD_PACKAGE:BOOL="0" -DBUILD_opencv_features2d:BOOL="0" -DBUILD_ITT:BOOL="0" -Dthunder:BOOL="0" -Dlzw:BOOL="0" -DCV_TRACE:BOOL="0" -DWITH_MSMF:BOOL="0" -DWITH_FFMPEG:BOOL="0" -DWITH_IMGCODEC_PXM:BOOL="0" -DWITH_MSMF_DXVA:BOOL="0" -DCPACK_SOURCE_ZIP:BOOL="0" -Dpackbits:BOOL="0" -DBUILD_opencv_apps:BOOL="0" -DBUILD_PROTOBUF:BOOL="0" -DBUILD_opencv_objdetect:BOOL="0" -DBUILD_IPP_IW:BOOL="0" -DBUILD_opencv_videoio:BOOL="0" -DBUILD_PERF_TESTS:BOOL="0" -Dmdi:BOOL="0" -DWITH_1394:BOOL="0" -DINSTALL_PDB:BOOL="0" -DWITH_OPENCL:BOOL="0" -DM_LIBRARY:FILEPATH="M_LIBRARY-NOTFOUND" -DUSE_WIN32_FILEIO:BOOL="1" -DCPACK_SOURCE_7Z:BOOL="0" -DBUILD_opencv_stitching:BOOL="0" -Dccitt:BOOL="0" -DVIDEOIO_ENABLE_STRICT_PLUGIN_CHECK:BOOL="0" -DWITH_IPP:BOOL="0" -DBUILD_opencv_dnn:BOOL="0" -DWITH_ITT:BOOL="0" -DCPACK_BINARY_NSIS:BOOL="0" -DBUILD_opencv_photo:BOOL="0" -DBUILD_opencv_calib3d:BOOL="0" -DWITH_QUIRC:BOOL="0" -DWITH_WEBP:BOOL="0" -DBUILD_opencv_python_bindings_generator:BOOL="0" -DWITH_PROTOBUF:BOOL="0" -DBUILD_JASPER:BOOL="1" -DWITH_OPENCLAMDBLAS:BOOL="0" -DBUILD_JAVA:BOOL="0" -DWITH_VTK:BOOL="0" -DBUILD_opencv_java_bindings_generator:BOOL="0" -DBUILD_opencv_highgui:BOOL="0" -DWITH_ARITH_DEC:BOOL="0" -DWITH_IMGCODEC_SUNRASTER:BOOL="0" -DWITH_ADE:BOOL="0" -DBUILD_OPENEXR:BOOL="0" -DWITH_OPENEXR:BOOL="0" -DWITH_OPENCLAMDFFT:BOOL="0" -DVIDEOIO_ENABLE_PLUGINS:BOOL="0" -DWITH_DSHOW:BOOL="0" -DOPENCV_DNN_OPENCL:BOOL="0" -DWITH_LAPACK:BOOL="0" -DWITH_IMGCODEC_PFM:BOOL="0" -Dlogluv:BOOL="0" -DINSTALL_PDB_COMPONENT_EXCLUDE_FROM_ALL:BOOL="0" -DBUILD_opencv_ml:BOOL="0" -DOPENCV_ENABLE_MEMALIGN:BOOL="0" -DBUILD_opencv_python_tests:BOOL="0" -DCV_ENABLE_INTRINSICS:BOOL="0" -DOPENCL_FOUND:BOOL="0" -DWITH_OPENCL_D3D11_NV:BOOL="0" -Dnext:BOOL="0" -DBUILD_opencv_gapi:BOOL="0" -DBUILD_opencv_flann:BOOL="0" -DBUILD_TESTS:BOOL="0" -DWITH_DIRECTX:BOOL="0" ..
make -j8
sudo make install

Tell Yadoms where to find OpenCV into the Yadoms file "sources/CMakeListsUserConfig.txt", by adding :

set(OPENCV_ROOT "/Users/yadoms/dev/opencv-<version>")

Yadoms

Grap sources

git clone https://github.com/Yadoms/yadoms.git yadoms

Configure repo

Create the sources/CMakeListsUserConfig.txt (from the CMakeListsUserConfig.sample.txt) and change paths (Boost, Poco, etc...) according to your configuration (don't forget to remove #). Example with Boost : set(BOOST_ROOT "/path/to/boost/boost_1_69_0")

Generate makefile

cd yadoms/
cd trunk/
sh cmake_linux.sh

Build Yadoms

cmake --build projects

Alternatively, if you are using a multi cores CPU, you can increase the build speed by using -j2 commutator (the number corresponds to the jobs running simultaneously)

cd projects
make -j2

Run Yadoms

cd ..
cd build
./yadoms

Developing with Eclipse (Ubuntu)

Installation

Install Eclipse v3.8.x Install "C/C++ developpement tools for Eclipse" package

Import project

Open Eclipse Do File->New->Makefile Project With Existing Code Set "Project Name" at "yadoms" Set "Existing Code Location" at "{path_of_yadoms}" Click "Finish"

Configure build

On the "Project Explorer" window, right-click, "Properties" In "C/C++ Build", select the "Builder settings" tab, change "Build directory" to "${workspace_loc:/yadoms/projects}/"

Configure debugger

On the "Project Explorer" window, right-click, "Properties" In "Run/Debug settings", select "yadoms Default", and click on "Edit..." In the "Main" tab : set "C/C++ Application" to "{path_of_yadoms}/builds/yadoms"

On the module(s) you want to debug, active the debug : On the "Project Explorer" window, open "Prokects/CMakeFiles/{module_to_debug}.dir/flags.make" file

  • Add "-g" option for CXX_FLAGS variable
  • Add "-DDEBUG" for CXX_DEFINES variable
Clone this wiki locally