Недавно я хотел построить тензор потока в качестве статической библиотеки, а затем использовать эту библиотеку в файлах C ++ и, наконец, использовать эти файлы C ++ в Android.
Я успешно построил статический файлбиблиотека в соответствии с разделом Android в здесь
Я внимательно прочитал эту замечательную статью и теперь знаю, какие заголовочные файлы следует включить,и какие файлы .a будут использоваться.
Я написал очень простой C ++ файл main.cpp.Он создает сеанс и запускает его, чтобы получить результат.Часть #include выглядит следующим образом:
#include "tensorflow/core/public/session.h"
#include "tensorflow/cc/ops/standard_ops.h"
Теперь последний шаг.Я должен написать Android.mk и использовать ndk-build для сборки файла .so, который будет использоваться в AndroidStudio.Поскольку C ++ использует 4 статические библиотеки: libtensorflow-core.a, libprotobuf.a, libprotobuf-lite.a и libprotoc.a.Я создаю один модуль для каждой библиотеки, используя
include $(PREBUILT_STATIC_LIBRARY)
И, наконец, мне нужно создать итоговую разделяемую библиотеку, которая включает в себя 4 готовых библиотеки.Мой Android.mk выглядит следующим образом:
#----------------------
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := tensorflow-prebuilt
LOCAL_TF_PATH := ../tensorflow- r1.10/tensorflow/contrib/makefile
LOCAL_SRC_FILES :=
$(LOCAL_TF_PATH)/gen/lib/android_armeabi-v7a/libtensorflow-core.a
LOCAL_EXPORT_C_INCLUDES += \
$(LOCAL_TF_PATH)/gen/host_obj \
$(LOCAL_TF_PATH)/gen/protobuf_android/armeabi-v7a/include \
$(LOCAL_TF_PATH)/downloads/eigen \
$(LOCAL_TF_PATH)/downloads/nsync/public \
../tensorflow-r1.10
include $(PREBUILT_STATIC_LIBRARY)
# here is a similar module for libprotobuf.a
# here is a similar module for libprotobuf-lite.a
# here is a similar module for libprotoc.a
include $(CLEAR_VARS)
LOCAL_MODULE := main
LOCAL_SRC_FILES := main.cpp
LOCAL_STATIC_LIBRARIES += \
tensorflow-prebuilt \
libprotobuf-prebuilt \
libprotobuf-lite-prebuilt \
libprotoc-prebuilt
include $(BUILD_SHARED_LIBRARY)
Затем, когда я использую ndk-build, он говорит, что отсутствуют некоторые заголовочные файлы, например,
"tensorflow/core/framework/device_attributes.pb.h"
Как правильно написать Android.mk?