Как заставить bazel генерировать временные статические библиотеки при сборке bazel //

Я использую bazel для создания тензорного потока и тензорного потока / обслуживания, обычно, когда я создавал тензорный поток / обслуживание с базелем, bazel сгенерировал для меня некоторую статическую библиотеку в bazel-bin/tensorflow_serving/core/. например, после того, как я успешно построил тензорный поток / обслуживание, я получил bazel-bin/tensorflow_serving/core/libaspired_version_policy.a и так далее.

Но все изменилось при создании тензорного потока / обслуживания на другом экземпляре докера, под bazel-bin/tensorflow_serving/core/ я получил только _objs, статических библиотек больше нет, почему?

Что мне делать, чтобы получить эти статические библиотеки?

Вот мой Dockerfile:

FROM tensorflow/tensorflow:1.15.5-py3
LABEL version="1.0.0"
WORKDIR /root/
ENV TMP=/tmp
RUN export https_proxy=http://220.181.102.178:8118 && \
  export http_proxy=http://220.181.102.178:8118
RUN ln -s /usr/local/bin/gfortran /usr/bin/gfortran
RUN apt-get update -yq ; exit 0
RUN apt-get install -yq software-properties-common apt-utils && apt-get update -yq; exit 0
RUN apt-get install -yq vim tree clang gdb make git
RUN apt-get install -yq automake bison flex libboost-all-dev libevent-dev
RUN apt-get install -yq libssl-dev ssh libtool pkg-config
RUN apt-get install -yq default-jdk default-jre libunwind8-dev libc-ares-dev
RUN apt-get install -yq python-numpy python-future libleveldb-dev libsnappy-dev libgoogle-perftools-dev
RUN apt-get install -yq librdkafka-dev libapr1-dev libaprutil1-dev texinfo unzip zip
RUN unset TF_NEED_CUDA
## To install go, uncomment below
#RUN add-apt-repository ppa:longsleep/golang-backports -y
#RUN apt-get install -yq golang-go 
RUN add-apt-repository ppa:ubuntu-toolchain-r/test -y
RUN apt-get install -yq gcc-8 g++-8
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 80 \
      --slave /usr/bin/g++ g++ /usr/bin/g++-8 \
      --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-8 \
      --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-8 \
      --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-8
RUN export https_proxy=http://220.181.102.178:8118 && wget https://github.com/Kitware/CMake/releases/download/v3.18.5/cmake-3.18.5-Linux-x86_64.sh && \
    bash cmake-3.18.5-Linux-x86_64.sh --prefix=/usr/ --skip-license && \
    rm -rf cmake-3.18.5-Linux-x86_64.sh
RUN export https_proxy=http://220.181.102.178:8118 && wget https://github.com/bazelbuild/bazel/releases/download/0.24.1/bazel-0.24.1-installer-linux-x86_64.sh && \
    bash bazel-0.24.1-installer-linux-x86_64.sh && rm -rf bazel-0.24.1-installer-linux-x86_64.sh
RUN mkdir .ssh/
ADD .ssh/ .ssh/
ADD .vimrc .
ADD .bashrc .
RUN export PATH=/usr/local/cuda/bin:$PATH && export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64:$LD_LIBRARY_PATH
RUN git config --global credential.helper store

версия bazel: 0.24.1

Tenorflow / версия обслуживания: 1.15.0 загружена со страницы выпуска github.

команда сборки:

export https_proxy=http://10.130.48.179:3128
unset TF_NEED_CUDA

# Build tensorflow_model_server
bazel build -c opt --copt=-msse4.1 --copt=-msse4.2 --copt=-mavx --copt=-mavx2 --copt=-mfma --copt=-O3 --copt=-march=native --cxxopt="-fexceptions" --verbose_failures //tensorflow_serving/model_servers:tensorflow_model_server

Пожалуйста помоги. Благодарю.


person Aero    schedule 19.01.2021    source источник


Ответы (2)


Для сборки //tensorflow_serving/model_servers:tensorflow_model_server Базеля нужны только *.o файлы. Создание статических библиотек было бы расточительным, потому что они не нужны cc_binary правилу. Используйте //tensorflow_serving/core:aspired_version_policy для создания этой конкретной библиотеки или просто используйте //... для создания всего в рабочей области

person Slay    schedule 28.01.2021

Поместите linkstatic=0 в каждый cc_library вызов, и этого должно быть достаточно, чтобы заставить bazel создавать статические библиотеки для каждого cc_library.

person warchantua    schedule 30.05.2021