簡體   English   中英

C ++:使用g ++編譯opencv和tensorflow時對std :: thread的未定義引用

[英]C++: undefined reference to std::thread while compiling opencv and tensorflow with g++

我想用opencv對圖像進行一些預處理,該圖像將被饋送到張量流模型。 預處理部分讀取一個.png文件,該代碼用作獨立程序,但是我想在運行tensorflow模型的程序中使用它,因此我生成了一個目標文件,如下所示。 預處理程序可以完美地獨立運行。

g++ -std=c++11 preProcess.cpp -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv2 -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_core -c

張量流程序Inference.cc編譯如下

g++ -std=c++11 preProcess.o Inference.cc -I/home/dpk/anaconda2/include/libpng16 -I/usr/local/include/opencv -I/usr/local/include/opencv2 -I/usr/local/include/tf -I/usr/local/include/eigen3 -I/usr/local/include/tf/bazel-genfiles -g -Wall -D_DEBUG -Wshadow -Wno-sign-compare -w  -L/usr/local/lib/libtensorflow_cc -L/home/dpk/anaconda2/lib -lpng16 -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_flann -lopencv_core `pkg-config --cflags --libs protobuf` -ltensorflow_cc -o inference

這將引發以下錯誤

/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_State::~_State()@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)())@GLIBCXX_3.4.22'
/usr/local/lib/libtensorflow_cc.so: undefined reference to `typeinfo for std::thread::_State@GLIBCXX_3.4.22'

該錯誤似乎是由於鏈接-L/home/dpk/anaconda2/lib ,因為當我不鏈接該文件夾時,編譯會順利進行,但是程序無法讀取.png文件。 因此,似乎該文件夾對於處理.png是必需的。

我需要我的程序讀取.png文件以及運行tensorflow模型。 我如何才能使它們都起作用?

Tensorflow是使用gcc 6構建的,因為存在一個鏈接器錯誤,它阻止了使用gcc 5的成功編譯。您必須使用gcc 6生成並鏈接程序,以避免出現此鏈接器錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM