FC2カウンター FPGAの部屋 Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトでエラー発生
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトでエラー発生

Ubuntu 16.04 上のVivado HLS 2017.2 でOpenCV を使用したプロジェクトで libjpeg.so.62 と libtiff.so.3 が無いと言われてコンパイルできなかったので、解決方法を書いておく。なお、VirtualBox 上のUbuntu 16.04 上のVivado HLS 2016.4 でも同様だった。

Vivado HLS 2017.2 の straight_dataset_bmp プロジェクトで、C シミュレーションをしようとしている。
とりあえず、最初の段階のコードなのだが、示しておこう。
straight_dataset_bmp.h を示す。(enscript を使用してHTML化した)


// straight_dataset_bmp.h
// 2017/07/24 by marsee
//

#ifndef __STRAIGHT_DATASET_BMP_H__
#define __STRAIGHT_DATASET_BMP_H__

#include "hls_video.h"

#define BMP_HEIGHT 600
#define BMP_WIDTH 800

#define REDUCTION_RATIO 0.075 // 1/13.3333... 60x45

#define DATASET_HEIGHT 56
#define DATASET_WIDTH 10

#define STRAIGHT_BMP_FILE_NAME straight
#define LEFT_TRUN_BMP_FILE_NAME left_turn
#define RIGHT_TRUN_BMP_FILE_NAME right_turn
#define STRAIGHT_NUM_OF_IMAGE 10
#define LEFT_TRUN_NUM_OF_IMAGE 10
#define RIGHT_TRUNNUM_OF_IMAGE 10

typedef hls::Scalar<3, unsigned char> RGB_PIXEL;
typedef hls::Mat<BMP_HEIGHT, BMP_WIDTH, HLS_8UC3> RGB_IMAGE;
typedef hls::Mat<BMP_HEIGHT, BMP_WIDTH, HLS_8UC1> GRAY_IMAGE;

#endif


straight_dataset_bmp.cpp を示す。


// straight_dataset_bmp.cpp
// 2017/07/24 by marsee
//

#include <iostream>
#include "hls_opencv.h"
#include "straight_dataset_bmp.h"

int main(){
char straight_fn[256] = "straight";
char left_turn_fn[256] = "left_turn";
char right_turn_fn[256] = "right_turn";
char bmp_file[256];

int i=0;
// refereed to http://opencv.jp/cookbook/opencv_img.html
// straight
//for(int i=0; i<STRAIGHT_NUM_OF_IMAGE; i++){
sprintf(bmp_file, "straight%d.bmp", straight_fn, i);
cv::Mat straight_img = cv::imread(bmp_file,1);
if(straight_img.empty())
return(-1);
cv::Mat reduct_img(straight_img.rows*0.075, straight_img.cols*0.075, straight_img.type());
cv::resize(straight_img, reduct_img, reduct_img.size(), cv::INTER_CUBIC);
cv::Mat gray_img;
cv::cvtColor(straight_img, gray_img, CV_BGR2GRAY);
sprintf(bmp_file, "straight_RED%d.bmp", i);
cv::imwrite(bmp_file, gray_img);
//}

return(0);
}


Cシミュレーションを行うとエラーだった。
wl_data_test_1_170728.png

エラーの内容を貼っておく。


Starting C simulation ...
/opt/Xilinx/Vivado_HLS/2017.2/bin/vivado_hls /home/masaaki/Vivado_HLS/straight_dataset_bmp/solution1/csim.tcl
INFO: [HLS 200-10] Running '/opt/Xilinx/Vivado_HLS/2017.2/bin/unwrapped/lnx64.o/vivado_hls'
INFO: [HLS 200-10] For user 'masaaki' on host 'masaaki-H110M4-M01' (Linux_x86_64 version 4.4.0-87-generic) on Fri Jul 28 05:06:19 JST 2017
INFO: [HLS 200-10] On os Ubuntu 16.04.2 LTS
INFO: [HLS 200-10] In directory '/home/masaaki/Vivado_HLS'
WARNING: [HLS 200-40] Environment variable 'C_INCLUDE_PATH' is set to :/usr/local/cuda/include.
INFO: [HLS 200-10] Opening project '/home/masaaki/Vivado_HLS/straight_dataset_bmp'.
INFO: [HLS 200-10] Opening solution '/home/masaaki/Vivado_HLS/straight_dataset_bmp/solution1'.
INFO: [SYN 201-201] Setting up clock 'default' with a period of 10ns.
INFO: [HLS 200-10] Setting target device to 'xc7z020clg400-1'
INFO: [SIM 211-2] *************** CSIM start ***************
INFO: [SIM 211-4] CSIM will launch GCC as the compiler.
Compiling ../../../straight_dataset_bmp.cpp in debug mode
Generating csim.exe
Makefile.rules:349: ターゲット 'csim.exe' のレシピで失敗しました
/usr/bin/ld: warning: libjpeg.so.62, needed by /opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libtiff.so.3, needed by /opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so, not found (try using -rpath or -rpath-link)
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFReadEncodedStrip' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_read_scanlines' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_alloc_huff_table' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_set_defaults' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_write_scanlines' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_finish_compress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFReadEncodedTile' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFGetField' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFReadRGBATile' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFScanlineSize' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFSetField' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_set_quality' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFSetWarningHandler' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_resync_to_restart' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFIsTiled' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFWriteScanline' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_destroy_decompress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFRGBAImageOK' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFOpen' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_CreateDecompress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_read_header' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFReadRGBAStrip' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFSetErrorHandler' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_stdio_src' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_destroy_compress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_stdio_dest' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `TIFFClose' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_finish_decompress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_start_decompress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_start_compress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_CreateCompress' に対する定義されていない参照です
/opt/Xilinx/Vivado_HLS/2017.2/lnx64/tools/opencv/libopencv_highgui.so: `jpeg_std_error' に対する定義されていない参照です
collect2: ld returned 1 exit status
make: *** [csim.exe] エラー 1
ERROR: [SIM 211-100] CSim file generation failed: compilation error(s).
INFO: [SIM 211-3] *************** CSIM finish ***************
5
while executing
"source /home/masaaki/Vivado_HLS/straight_dataset_bmp/solution1/csim.tcl"
invoked from within
"hls::main /home/masaaki/Vivado_HLS/straight_dataset_bmp/solution1/csim.tcl"
("uplevel" body line 1)
invoked from within
"uplevel 1 hls::main {*}$args"
(procedure "hls_proc" line 5)
invoked from within
"hls_proc $argv"
Finished C simulation.


libjpeg.so.62 と libtiff.so.3 が無いと言われているみたいだ。

まずは、libjpeg.so.62 をなんとかしよう。
Re: Vivado HLS 2013.2 fails on ubuntu due to missing libtiff3 ”を参考にして、libjpeg62-dev をインストールした。
sudo apt-get install libjpeg62-dev
wl_data_test_2_170728.png

もう一度、Vivado HLS でCシミュレーションを行った。
wl_data_test_3_170728.png

libtiff.so.3 だけになった。

libtiff.so.3 は、”libtiff.so.3, undefined reference to `TIFFReadEncodedStrip'”を参考にして、tiff-3.9.7 をインストールした。
まずは、http://download.osgeo.org/libtiff/に行って、tiff-3.9.7.zip をダウンロードした。
wl_data_test_4_170728.png

tiff-3.9.7.zip を解凍して、tiff-3.9.7 ディレクトリにコピー&ペーストした。
wl_data_test_5_170728.png

cd tiff-3.9.7
ls
./configure

wl_data_test_6_170728.png

wl_data_test_7_170728.png

ステータスを示す。


Libtiff is now configured for x86_64-unknown-linux-gnu

Installation directory: /usr/local
Documentation directory: ${prefix}/share/doc/tiff-3.9.7
C compiler: gcc -g -O2 -Wall -W
C++ compiler: g++ -g -O2
Enable runtime linker paths: no
Enable linker symbol versioning: no
Support Microsoft Document Imaging: yes

Support for internal codecs:
CCITT Group 3 & 4 algorithms: yes
Macintosh PackBits algorithm: yes
LZW algorithm: yes
ThunderScan 4-bit RLE algorithm: yes
NeXT 2-bit RLE algorithm: yes
LogLuv high dynamic range encoding: yes

Support for external codecs:
ZLIB support: yes
Pixar log-format algorithm: yes
JPEG support: yes
Old JPEG support: yes
ISO JBIG support: yes

C++ support: yes

OpenGL support: yes


make
成功した。
wl_data_test_8_170728.png

sudo cp libtiff/.libs/libtiff.so.3* /opt/Xilinx/Vivado_HLS/2017.2/lib/lnx64.o/
sudo ldconfig

wl_data_test_10_170728.png
(注:Vivado HLS 2016.4 は”Re: Vivado HLS 2013.2 fails on ubuntu due to missing libtiff3 ”の通りのパスにコピーしたところ、うまく行った。このディスティネーション・ディレクトリにコピーする必要があるのは、2017.1 からなのかもしれない? /usr/lib64 にコピーできたということなので、Vivado HLSのバージョンではなく、Ubuntuのバージョンですよね? ともかく、/opt/Xilinx/Vivado_HLS/<Vivado HLSのバージョン番号>/lib/lnx64.o/にコピーすれば良いのでは?と思います)
注2 [2017/11/29] :Vivado 2017.3 では、Vivado_HLS ディレクトリにバージョンのディレクトリを作成しないで、Vivado に統合されてしまったようだ。libtiff.so.3* をコピーする位置は /opt/Xilinx/Vivado_HLS/2017.3/lib/lnx64.o/ にする必要があるようだ。
sudo cp libtiff/.libs/libtiff.so.3* /opt/Xilinx/Vivado/2017.3/lib/lnx64.o/
sudo ldconfig



再々度、Vivado HLS でCシミュレーションを行った。
wl_data_test_11_170729.png

ライブラリのエラーはなくなった。このエラーは画像ファイルが無いので出ている。

(2017/10/25:追記)
AR# 66184 インストール - Vivado ツールを Linux で実行するために必要なライブラリの検索方法”をやってみれば解消できるかもしれない?
  1. 2017年07月29日 06:39 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/3869-0530ab39
この記事にトラックバックする(FC2ブログユーザー)