准备工作
编译器:Visual Studio 2017
源码下载: git clone https://github.com/tensorflow/tensorflow.git
构建工具:cmake
tips: windows xp 最后的编译器支持为 visual studio 2017
visual studio 2017 需要 组件 ”对C++ 的Windows XP 支持“, 如果已有请忽略
- 打开 Visual Studio Installer
- 选择 visual studio 2017,选择修改
- 找到工作负荷-> 使用C++的桌面开发-> 对C++ 的windows Xp 支持
安装完成,开始编译工作
开始编译
cd tensorflow目录
# 将版本号修改为 2.14.0
git reset --hard v2.14.0
# 创建构建目录
mkdir tflite_build
# 进去编译目录
cd tflite_build
# 构建工程
# -G "Visual Studio 15 2017" 选择编译器为 visual studio 2017
# -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" 将运行库设置为 /MT, 不设这个可能对导致 xp 缺少运行库,(也可以不加这个,但是需要将缺少的运行库和程序一起打包)
# -DCMAKE_CXX_FLAGS="/MP /D_WIN32_WINNT=0x0501" 指定使用多线程编译,能加快编译速度, _WIN32_WINNT=0x0501 定义目标版本为 windows xp
# -DCMAKE_GENERATOR_TOOLSET="v141_xp" 选择平台工具集为 windows XP, 必须用这个,上面安装 ”对C++ 的Windows XP 支持“ 成功就能选择!!!
# -DBUILD_SHARED_LIBS=ON 编译动态库
cmake ..\tensorflow\lite\ -G "Visual Studio 15 2017" -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreaded$<$<CONFIG:Debug>:Debug>" -DCMAKE_GENERATOR_TOOLSET="v141_xp" -DTFLITE_ENABLE_XNNPACK=OFF -DTFLITE_KERNEL_TEST=OFF -DTFLITE_ENABLE_INSTALL=OFF -DCMAKE_CXX_FLAGS="/MP /D_WIN32_WINNT=0x0501" -DBUILD_SHARED_LIBS=ON
# 构建成功,用visual studio 2017 打开 .sln 编译tensorflow lite
编译时可能会报一个编译器内部错误 any_invocable.h
修改 239-230 行内容,变成下面的代码
template <bool SigIsNoexcept, class ReturnType, class... Params>
using InvokerType =
typename std::conditional<SigIsNoexcept,
ReturnType(TypeErasedState*, Params...) ,
ReturnType(TypeErasedState*, Params...)>::type;