c++ - 用 bazel 错误编译 tensorflow:未找到 tensorflow_cc 库
问题描述
我正在用 bazel 将 tensorflow 编译为 C++ 中的音频神经网络源分离模型。(sleeterpp)。我写了这个Dockerfile:
FROM continuumio/anaconda3
RUN apt-get update && apt-get install -y \
wget \
unzip \
rsync \
gcc \
build-essential \
software-properties-common \
cmake
# spleeterpp source
WORKDIR spleeterpp
COPY . .
# bazel install
RUN wget https://github.com/bazelbuild/bazel/releases/download/0.25.2/bazel-0.25.2-installer-linux-x86_64.sh
RUN bash bazel-0.25.2-installer-linux-x86_64.sh
# tensorflow bazel build
RUN git clone https://github.com/tensorflow/tensorflow.git && \
cd tensorflow && \
git checkout v1.14.0 && \
rm BUILD
RUN cd tensorflow && \
python tensorflow/tools/pip_package/setup.py install && \
mv build build-bu && \
git checkout BUILD && \
./configure
# build tensorflow to bazel-bin/tensorflow/libtensorflow_cc.so
RUN cd tensorflow && \
bazel build --config=monolithic --jobs=6 --verbose_failures //tensorflow:libtensorflow_cc.so
# tensorflow install
ENV INSTALL_DIR=install
ENV INCLUDE_DIR=$INSTALL_DIR/include
RUN cd tensorflow && \
mkdir -p $INSTALL_DIR/bin && \
cp bazel-bin/tensorflow/libtensorflow_cc.so* $INSTALL_DIR/bin/ && \
mkdir -p $INSTALL_DIR/include && \
rsync -a --prune-empty-dirs --include '*/' --include '*.h' --exclude '*' tensorflow/ $INCLUDE_DIR/tensorflow && \
mkdir -p $INSTALL_DIR/include/third_party/eigen3/unsupported/ && \
cp -r ./bazel-tensorflow/external/eigen_archive/unsupported/Eigen $INSTALL_DIR/include/third_party/eigen3/unsupported/Eigen && \
cp -r ./bazel-tensorflow/external/eigen_archive/Eigen $INSTALL_DIR/include/third_party/eigen3/Eigen
# spleeterpp build
RUN mkdir build && cd build && \
cmake -DTENSORFLOW_CC_INSTALL_DIR=$INSTALL_DIR/bin/ .. && \
cmake --build .
# defaults command
CMD ["bash"]
我得到错误
CMake Error at cmake/add_tensorflow.cmake:7 (message):
tensorflow_cc library not found
根路径是根项目文件夹(CMakeLists.txt
文件所在的位置),而 tensorflow Bazel 构建的安装路径是$INSTALL_DIR
,所以我希望将静态库放在$INSTALL_DIR/bin/
之前复制的位置,所以我设置cmake -DTENSORFLOW_CC_INSTALL_DIR=$INSTALL_DIR/bin/
了 ,但它不起作用.
解决方案
推荐阅读
- regex - 如何解决 AppleScript 中的这些 grep 错误?
- linux - 如何在不登录的情况下知道公开可用的 ntp 池服务器上的当前时间?
- c# - 从未显示最后一个值的滑块值更改事件触发任务
- powershell - 如何排除 Pester 配置中的路径?
- neo4j - Cypher Neo4J 请求中的奇怪错误
- jquery-isotope - 同位素随机排序
- asp.net-core - .NetCore 3.1 项目文件在创建 VS2019 后不显示 --
- c# - 将项目发布到服务器时,ASP.NET Core 没有默认页面
- python - 通过 rpy2 在 Python 中通过基于 R 的 glmmTMB 拟合 Logistic AR1
- javascript - 模棱两可的javascript输出