ubuntu16.04上ソフトウェアのインストールメモ - GerryZhang0925/dev_env GitHub Wiki

Table of Contents

1. Mastering OpenCV

1.1 ffmpegを使ったopencvのインストール

   conda remove opencv
   conda install ffmpeg
   conda install -c menpo opencv
   pip install opencv-contrib-python

1.2 Install x264 Codec

    sudo apt-get remove ffmpeg x264 libx264-dev
    sudo apt-get remove nasm
    sudo apt-get remove yasm
    sudo apt-get update
    sudo apt-get install build-essential git-core checkinstall yasm texi2html libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev
    cd 
    mkdir codec
    cd codec
    wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
    tar xzvf nasm-2.13.03.tar.gz
    cd nasm-2.13.03/
    ./autogen.sh
    ./configure
    make
    sudo make install
    cd
    cd codec
    git clone http://git.videolan.org/git/x264.git
    cd x264
    ./configure --enable-static
    make
    sudo make install

1.3 opencvの再インストール

   sudo apt-get remove libopencv*
   sudo apt-get remove opencv*
   sudo ldconfig && sudo ldconfig -vp
   sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
   sudo apt-get install build-essential
   sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
   sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
   sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
   sudo apt-get install libxvidcore-dev libx264-dev
   sudo apt-get install libgtk-3-dev
   sudo apt-get install libatlas-base-dev gfortran
   sudo apt-get autoremove libtiff5-dev
   sudo apt-get install libtiff5-dev
   sudo apt-get install libopenexr-dev
   sudo apt-get install libomp-dev
   cd
   wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.0.zip
   unzip opencv.zip
   wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.0.zip
   unzip opencv_contrib.zip
   cd opencv-3.4.0/
   mkdir build
   cd build
   cmake -D CMAKE_INSTALL_PREFIX=$(python -c "import sys; print(sys.prefix)") -D PYTHON3_EXECUTABLE=$(which python) -D PYTHON3_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D WITH_OPENGL=ON -D WITH_QT=ON -D CMAKE_BUILD_TYPE=RELEASE -D WITH_CUDA=ON -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda/ -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.0/modules -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_QT=ON -D BUILD_TIFF=ON -D WITH_OPENMP=ON -D WITH_VTK=OFF ..
   make -j4
   sudo make install
   sudo ldconfig

1.4 OpenCV アプリケーションのコンパイル

   g++ test.cpp `pkg-config --cflags --libs opencv`

1.5 install MP3 support

    sudo apt-get install libmp3lame-dev

1.6 install ffmpeg

    cd 
    cd codec
    git clone https://git.videolan.org/git/ffmpeg.git
    cd ffmpeg
    ./configure --prefix=/home/gzhang/anaconda3 --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libvpx
    make
    sudo make install

1.7 Abstract PNG files from a movie with ffmpeg

    ffmpeg -i input.mp4 -vcodec png image_%03d.png

1.8 Create a movie from PNG files with ffmpeg

    ffmpeg -framerate 30 -i image_%03d.png -vcodec libx264 -pix_fmt yuv420p -r 60 out.mp4

2. CUDA9.2のインストールとDRIVEAVのインストール

2.1 Download CUDA

CUDA 9.2パッケージをhttps://developer.nvidia.com/cuda-92-download-archive?target_os=Linux&target_arch=x86_64&target_distro=Ubuntu&target_version=1604&target_type=deblocalからダウンロード

2.2 Install CUDA

Install CUDA 9.2 with following commands.

   sudo dpkg -i cuda-repo-ubuntu1604-9-2-local_9.2.148-1_amd64.deb
   sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub
   sudo apt-get update
   sudo apt-get install cuda

2.3 Install patch for CUDA 9.2

   sudo dpkg -i cuda-repo-ubuntu1604-9-2-148-local-patch-1_1.0-1_amd64.deb

2.4 Install DriveAV

下記三つのDRIVEAVパッケージをインストール

   driveworks_data-v1.2.131-4522892-424901-nogcid-linux-amd64-ubuntu1604.deb
   driveav_samples-v1.2.131-4522892-424901-nogcid-linux-amd64-ubuntu1604.deb
   driveav-v1.2.131-4522892-424901-nogcid-linux-amd64-ubuntu1604.deb

3. Anacondaのインストール

3.1 Git-flowのインストール

端末で下記コマンドを実行。

 sudo apt install git-flow

3.2 C/C++環境のインストール

端末で下記コマンドを実行。

  sudo apt install clang-3.9
  sudo apt install libc++-dev
  sudo apt install clang-format-3.9

3.3 デバッガーのインストール

端末で下記コマンドを実行。

  sudo apt install gdb

3.4 Python環境のインストール

  wget --no-check-certificate https://repo.continuum.io/archive/Anaconda3-4.4.0-Linux-x86_64.sh
  chmod +x Anaconda3-4.4.0-Linux-x86_64.sh
  ./Anaconda3-4.4.0-Linux-x86_64.sh

3.5 Python上でライブラリをセットアップ

端末で下記コマンドを実行。

  sudo apt install python-pip
  pip install hjson==3.0.0 jinja2==2.9.6 graphviz==0.8.1 jsonschema==2.6.0 zstd==1.3.3 bson==0.5.2 numpy==1.14.2 --trusted-host pypi.python.org --default-timeout=100

上記コマンドはpython2に対して動作する可能性があるため、以下のコマンドを明示的に実行

  sudo apt install python3-pip
  pip3 install hjson==3.0.0 jinja2==2.9.6 graphviz==0.8.1 jsonschema==2.6.0 zstd==1.3.3 bson==0.5.2 numpy==1.14.2  --trusted-host pypi.python.org --default-timeout=100

3.6 IDE関連ツールのインストール

3.6.1 Graphvizのインストール 端末で下記コマンドを実行。

  sudo apt install doxygen
  sudo apt install graphviz

3.6.2 カバレッジ測定ツールのインストール 端末で下記コマンドを実行。

  sudo apt install lcov

3.6.3 Qt関連環境のインストール 端末で下記コマンドを実行。

  sudo apt install qt5-default freeglut3 freeglut3-dev libopencv-dev libboost-all-dev libglew-dev

4 Build NVidia Docker Image for OpenGL

4.1 Build Docker Image

Build docker image with the following docker file.

  # Set up for OpenGL Build
  ## glvnd
  FROM ubuntu:16.04 as glvnd
  
  RUN apt-get update && apt-get install -y --no-install-recommends \
          git \
          ca-certificates \
          make \
          automake \
          autoconf \
          libtool \
          pkg-config \
          python \
          libxext-dev \
          libx11-dev \
          x11proto-gl-dev && \
      rm -rf /var/lib/apt/lists/*
  
  WORKDIR /opt/libglvnd
  RUN git clone --branch=v1.1.0 https://github.com/NVIDIA/libglvnd.git . && \
      ./autogen.sh && \
      ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu && \
      make -j"$(nproc)" install-strip && \
      find /usr/local/lib/x86_64-linux-gnu -type f -name 'lib*.la' -delete  
  
  RUN dpkg --add-architecture i386 && \
      apt-get update && apt-get install -y --no-install-recommends \
          gcc-multilib \
          libxext-dev:i386 \
          libx11-dev:i386 && \
      rm -rf /var/lib/apt/lists/*
  
  # 32-bit libraries
  RUN make distclean && \
      ./autogen.sh && \
      ./configure --prefix=/usr/local --libdir=/usr/local/lib/i386-linux-gnu --host=i386-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" && \
      make -j"$(nproc)" install-strip && \
      find /usr/local/lib/i386-linux-gnu -type f -name 'lib*.la' -delete
  
  ## OpenGL
  FROM ubuntu:16.04 as khronos
  
  RUN apt-get update && apt-get install -y --no-install-recommends \
          ca-certificates \
          git && \
      rm -rf /var/lib/apt/lists/*
  
  RUN git clone https://github.com/KhronosGroup/OpenGL-Registry.git && cd OpenGL-Registry && \
      git checkout 681c365c012ac9d3bcadd67de10af4730eb460e0 && \
      cp -r api/GL /usr/local/include
  
  RUN git clone https://github.com/KhronosGroup/EGL-Registry.git && cd EGL-Registry && \
      git checkout 0fa0d37da846998aa838ed2b784a340c28dadff3 && \
      cp -r api/EGL api/KHR /usr/local/include
  
  RUN git clone --branch=mesa-17.3.3 --depth=1 https://anongit.freedesktop.org/git/mesa/mesa.git && cd mesa && \
      cp include/GL/gl.h include/GL/gl_mangle.h /usr/local/include/GL/
  # 
  FROM 172.31.122.2:5000/adx/develop:latest
  
  ## base
  RUN dpkg --add-architecture i386 && \
      apt-get update && apt-get install -y --no-install-recommends \
          libxau6 libxau6:i386 \
          libxdmcp6 libxdmcp6:i386 \
          libxcb1 libxcb1:i386 \
          libxext6 libxext6:i386 \
          libx11-6 libx11-6:i386 && \
      rm -rf /var/lib/apt/lists/*
  
  # nvidia-container-runtime
  ENV NVIDIA_VISIBLE_DEVICES ${NVIDIA_VISIBLE_DEVICES:-all}
  ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics,compat32,display
  
  # Required for non-glvnd setups.
  ENV LD_LIBRARY_PATH /usr/lib/x86_64-linux-gnu:/usr/lib/i386-linux-gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  
  ## glvnd runtime
  COPY --from=glvnd /usr/local/lib/x86_64-linux-gnu /usr/local/lib/x86_64-linux-gnu
  COPY --from=glvnd /usr/local/lib/i386-linux-gnu /usr/local/lib/i386-linux-gnu
  
  #COPY 10_nvidia.json /usr/local/share/glvnd/egl_vendor.d/10_nvidia.json
  
  RUN echo '/usr/local/lib/x86_64-linux-gnu' >> /etc/ld.so.conf.d/glvnd.conf && \
      echo '/usr/local/lib/i386-linux-gnu' >> /etc/ld.so.conf.d/glvnd.conf && \
      ldconfig
  
  ENV LD_LIBRARY_PATH /usr/local/lib/x86_64-linux-gnu:/usr/local/lib/i386-linux-  gnu${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
  
  ## glvnd devel
  RUN apt-get update && apt-get install -y --no-install-recommends \
          pkg-config \
          libxau-dev libxau-dev:i386 \
          libxdmcp-dev libxdmcp-dev:i386 \
          libxcb1-dev libxcb1-dev:i386 \
          libxext-dev libxext-dev:i386 \
          libx11-dev libx11-dev:i386 && \
      rm -rf /var/lib/apt/lists/*
  
  COPY --from=khronos /usr/local/include /usr/local/include
  
  RUN apt-get update && apt-get install -y --no-install-recommends \
          git \
          ca-certificates \
          build-essential \
          g++ \
          libxinerama-dev \
          libxext-dev \
          libxrandr-dev \
          libxi-dev \
          libxcursor-dev \
          libxxf86vm-dev \
          libvulkan-dev && \
      rm -rf /var/lib/apt/lists/*

コマンドは下記。ここでは例として生成するイメージ名は`adx_opengl`としている。

   sudo docker build . -t adx_opengl  --build-arg http_proxy=http://xxx.xxx.xxx.xxx:xxxxx/ --build-arg https_proxy=http://xxx.xxx.xxx.xxx:xxxxx/

4.2 Download nVidia OpenGL Sample

nvidiaが公開しているサンプルコードをダウンロードする。

  git clone https://github.com/NVIDIAGameWorks/GraphicsSamples.git
⚠️ **GitHub.com Fallback** ⚠️