Я скомпилировал библиотеку для API C ++ для TensorFlow Lite (r1.97), используя скрипт ${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/build_rpi_lib.sh
, выполнив шаги, предложенные на этой официальной странице (Собственная компиляция, загрузка необходимых библиотек), где${TENSORFLOW_ROOT}
- это корневая папка, в которой я клонировал репозиторий.
Я пытаюсь скомпилировать эту простую test.cpp
программу:
#include <memory>
#include "tensorflow/lite/interpreter.h"
int main(void)
{
std::unique_ptr<tflite::Interpreter> interpreter(new tflite::Interpreter);
}
с помощью команды:
gcc-6 test.cpp -I${TENSORFLOW_ROOT} -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/eigen -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/protobuf/src -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads -L${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/gen/rpi_armv7l/lib -lstdc++ -ldl -ltensorflow-lite
Список включений был предложен на странице Интеграция библиотек TensorFlow (в частности, из раздела iOS).Компиляция завершается неудачно со следующей ошибкой, связанной с включением Eigen:
${TENSORFLOW_ROOT}/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42: fatal error: unsupported/Eigen/CXX11/Tensor: No such file or directory
#include "unsupported/Eigen/CXX11/Tensor"
Я нашел несколько ссылок, где обсуждается, по-видимому, похожая проблема (например, one ), но предложенные решенияиспользование ссылок на пакет Python TensorFlow, что невозможно в моем случае (и это выглядит довольно неоднозначно - я не рассматриваю использование python для этого проекта).
Я также пытался использовать другой путь включенияto Eigen (например, ${TENSORFLOW_ROOT}/third_party/eigen3
):
gcc-6 test.cpp -I${TENSORFLOW_ROOT} -I${TENSORFLOW_ROOT}/third_party/eigen3 -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads/protobuf/src -I${TENSORFLOW_ROOT}/tensorflow/contrib/makefile/downloads -L${TENSORFLOW_ROOT}/tensorflow/lite/tools/make/gen/rpi_armv7l/lib -lstdc++ -ldl -ltensorflow-lite
, а также это приводит к ошибкам компиляции, связанным с Eigen, такого рода:
...
${TENSORFLOW_ROOT}/third_party/eigen3/unsupported/Eigen/CXX11/Tensor:1:42: error: #include nested too deeply
#include "unsupported/Eigen/CXX11/Tensor"
...
${TENSORFLOW_ROOT}/third_party/eigen3/Eigen/Core:1:22: error: #include nested too deeply
#include "Eigen/Core"
...
Есть предложения о том, как решить эту проблему?Каков правильный набор путей включения?