aboutsummaryrefslogtreecommitdiff
path: root/21.02/md__build_guide_cross_compilation.xhtml
diff options
context:
space:
mode:
Diffstat (limited to '21.02/md__build_guide_cross_compilation.xhtml')
-rw-r--r--21.02/md__build_guide_cross_compilation.xhtml49
1 files changed, 25 insertions, 24 deletions
diff --git a/21.02/md__build_guide_cross_compilation.xhtml b/21.02/md__build_guide_cross_compilation.xhtml
index 1a630e4269..81c93bb13c 100644
--- a/21.02/md__build_guide_cross_compilation.xhtml
+++ b/21.02/md__build_guide_cross_compilation.xhtml
@@ -105,6 +105,7 @@ $(document).ready(function(){initNavTree('md__build_guide_cross_compilation.xhtm
<li><a href="#build-caffe-for-x86-64">Build Caffe for x86_64</a></li>
<li><a href="#build-boost-library-for-arm64">Build Boost library for arm64</a></li>
<li><a href="#build-compute-library">Build Compute Library</a></li>
+<li><a href="#download-armnn">Download ArmNN</a></li>
<li><a href="#build-tensorflow">Build Tensorflow</a></li>
<li><a href="#build-flatbuffer">Build Flatbuffer</a></li>
<li><a href="#build-onnx">Build Onnx</a></li>
@@ -115,7 +116,8 @@ $(document).ready(function(){initNavTree('md__build_guide_cross_compilation.xhtm
<li><a href="#troubleshooting-and-errors-">Troubleshooting and Errors:</a></li>
</ul>
<h2>Introduction</h2>
-<p>These are the step by step instructions on Cross-Compiling Arm NN under an x86_64 system to target an Arm64 system. This build flow has been tested with Ubuntu 16.04. The instructions show how to build the Arm NN core library and the Boost, Protobuf, Caffe, Tensorflow, Tflite, Flatbuffer and Compute Libraries for compilation.</p>
+<p>These are the step by step instructions on Cross-Compiling Arm NN under an x86_64 system to target an Arm64 system. This build flow has been tested with Ubuntu 16.04. The instructions assume you are using a bash shell and show how to build the Arm NN core library, Boost, Protobuf, Caffe, Tensorflow, Tflite, Flatbuffer and Compute Libraries. Start by creating a directory to contain all components:</p>
+<p>''' mkdir $HOME/armnn-devenv cd $HOME/armnn-devenv '''</p>
<h5>Note: We are currently in the process of removing boost as a dependency to Arm NN. This process is finished for everything apart from our unit tests. This means you don't need boost to build and use Arm NN but you need it to execute our unit tests. Boost will soon be removed from Arm NN entirely. We also are deprecating support for Caffe and Tensorflow parsers in 21.02. This will be removed in 21.05.</h5>
<h2>Cross-compiling ToolChain</h2>
<ul>
@@ -123,74 +125,73 @@ $(document).ready(function(){initNavTree('md__build_guide_cross_compilation.xhtm
</ul>
<h2>Build and install Google's Protobuf library</h2>
<p>We support protobuf version 3.12.0</p><ul>
-<li>Get protobuf from here: <a href="https://github.com/protocolbuffers/protobuf">https://github.com/protocolbuffers/protobuf</a> : <div class="fragment"><div class="line">git clone -b v3.12.0 https://github.com/google/protobuf.git protobuf</div><div class="line">cd protobuf</div><div class="line">git submodule update --init --recursive</div><div class="line">./autogen</div></div><!-- fragment --></li>
+<li>Get protobuf from here: <a href="https://github.com/protocolbuffers/protobuf">https://github.com/protocolbuffers/protobuf</a> : <div class="fragment"><div class="line">git clone -b v3.12.0 https://github.com/google/protobuf.git protobuf</div><div class="line">cd protobuf</div><div class="line">git submodule update --init --recursive</div><div class="line">./autogen.sh</div></div><!-- fragment --></li>
<li>Build a native (x86_64) version of the protobuf libraries and compiler (protoc): (Requires cUrl, autoconf, llibtool, and other build dependencies if not previously installed: sudo apt install curl autoconf libtool build-essential g++) <div class="fragment"><div class="line">mkdir x86_64_build</div><div class="line">cd x86_64_build</div><div class="line">../configure --prefix=$HOME/armnn-devenv/google/x86_64_pb_install</div><div class="line">make install -j16</div><div class="line">cd ..</div></div><!-- fragment --></li>
-<li>Build the arm64 version of the protobuf libraries: <div class="fragment"><div class="line">mkdir arm64_build</div><div class="line">cd arm64_build</div><div class="line">export CC=aarch64-linux-gnu-gcc \</div><div class="line">export CXX=aarch64-linux-gnu-g++ \</div><div class="line">../configure --host=aarch64-linux \</div><div class="line">--prefix=$HOME/armnn-devenv/google/arm64_pb_install \</div><div class="line">--with-protoc=$HOME/armnn-devenv/google/x86_64_pb_install/bin/protoc</div><div class="line">make install -j16</div><div class="line">cd ..</div></div><!-- fragment --></li>
+<li>Build the arm64 version of the protobuf libraries: <div class="fragment"><div class="line">mkdir arm64_build</div><div class="line">cd arm64_build</div><div class="line">CC=aarch64-linux-gnu-gcc \</div><div class="line">CXX=aarch64-linux-gnu-g++ \</div><div class="line">../configure --host=aarch64-linux \</div><div class="line">--prefix=$HOME/armnn-devenv/google/arm64_pb_install \</div><div class="line">--with-protoc=$HOME/armnn-devenv/google/x86_64_pb_install/bin/protoc</div><div class="line">make install -j16</div><div class="line">cd ..</div></div><!-- fragment --></li>
</ul>
<h2>Build Caffe for x86_64</h2>
<ul>
<li>Ubuntu 16.04 installation. These steps are taken from the full Caffe installation documentation at: <a href="http://caffe.berkeleyvision.org/install_apt.html">http://caffe.berkeleyvision.org/install_apt.html</a></li>
<li>Install dependencies: <div class="fragment"><div class="line">sudo apt-get install libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev</div><div class="line">sudo apt-get install --no-install-recommends libboost-all-dev</div><div class="line">sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev</div><div class="line">sudo apt-get install libopenblas-dev</div><div class="line">sudo apt-get install libatlas-base-dev</div></div><!-- fragment --></li>
-<li>Download Caffe from: <a href="https://github.com/BVLC/caffe">https://github.com/BVLC/caffe</a>. We have tested using tag 1.0 <div class="fragment"><div class="line">git clone https://github.com/BVLC/caffe.git</div><div class="line">cd caffe</div><div class="line">git checkout eeebdab16155d34ff8f5f42137da7df4d1c7eab0</div><div class="line">cp Makefile.config.example Makefile.config</div></div><!-- fragment --></li>
-<li>Adjust Makefile.config as necessary for your environment, for example: <div class="fragment"><div class="line">#CPU only version:</div><div class="line">CPU_ONLY := 1</div><div class="line"></div><div class="line">#Add hdf5 and protobuf include and library directories (Replace $HOME with explicit /home/username dir):</div><div class="line">INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/ $HOME/armnn-devenv/google/x86_64_pb_install/include/</div><div class="line">LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/ $HOME/armnn-devenv/google/x86_64_pb_install/lib/</div></div><!-- fragment --></li>
+<li>Download Caffe from: <a href="https://github.com/BVLC/caffe">https://github.com/BVLC/caffe</a>. We have tested using tag 1.0 <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">git clone https://github.com/BVLC/caffe.git</div><div class="line">cd caffe</div><div class="line">git checkout eeebdab16155d34ff8f5f42137da7df4d1c7eab0</div><div class="line">cp Makefile.config.example Makefile.config</div></div><!-- fragment --></li>
+<li>Adjust Makefile.config as necessary for your environment, for example: <div class="fragment"><div class="line">#CPU only version:</div><div class="line">CPU_ONLY := 1</div><div class="line"></div><div class="line">#Add hdf5 and protobuf include and library directories (Replace $HOME with explicit /home/username dir):</div><div class="line">INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/ $(HOME)/armnn-devenv/google/x86_64_pb_install/include/</div><div class="line">LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/ $(HOME)/armnn-devenv/google/x86_64_pb_install/lib/</div></div><!-- fragment --></li>
<li>Setup environment: <div class="fragment"><div class="line">export PATH=$HOME/armnn-devenv/google/x86_64_pb_install/bin/:$PATH</div><div class="line">export LD_LIBRARY_PATH=$HOME/armnn-devenv/google/x86_64_pb_install/lib/:$LD_LIBRARY_PATH</div></div><!-- fragment --></li>
<li>Compilation with Make: <div class="fragment"><div class="line">make all</div><div class="line">make test</div><div class="line">make runtest</div><div class="line"># These should all run without errors</div></div><!-- fragment --></li>
<li>caffe.pb.h and caffe.pb.cc will be needed when building Arm NN's Caffe Parser</li>
</ul>
<h2>Build Boost library for arm64</h2>
<ul>
-<li>Build Boost library for arm64 Download Boost version 1.64 from <a href="http://www.boost.org/doc/libs/1_64_0/more/getting_started/unix-variants.html">http://www.boost.org/doc/libs/1_64_0/more/getting_started/unix-variants.html</a> Using any version of Boost greater than 1.64 will fail to build Arm NN, due to different dependency issues. <div class="fragment"><div class="line">tar -zxvf boost_1_64_0.tar.gz</div><div class="line">cd boost_1_64_0</div><div class="line">echo &quot;using gcc : arm : aarch64-linux-gnu-g++ ;&quot; &gt; user_config.jam</div><div class="line">./bootstrap.sh --prefix=$HOME/armnn-devenv/boost_arm64_install</div><div class="line">./b2 install toolset=gcc-arm link=static cxxflags=-fPIC --with-test --with-log --with-program_options -j32 --user-config=user_config.jam</div></div><!-- fragment --></li>
+<li>Build Boost library for arm64 Download Boost version 1.64 from <a href="http://www.boost.org/doc/libs/1_64_0/more/getting_started/unix-variants.html">http://www.boost.org/doc/libs/1_64_0/more/getting_started/unix-variants.html</a> Using any version of Boost greater than 1.64 will fail to build Arm NN, due to different dependency issues. <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">tar -zxvf boost_1_64_0.tar.gz</div><div class="line">cd boost_1_64_0</div><div class="line">echo &quot;using gcc : arm : aarch64-linux-gnu-g++ ;&quot; &gt; user_config.jam</div><div class="line">./bootstrap.sh --prefix=$HOME/armnn-devenv/boost_arm64_install</div><div class="line">./b2 install toolset=gcc-arm link=static cxxflags=-fPIC --with-test --with-log --with-program_options -j32 --user-config=user_config.jam</div></div><!-- fragment --></li>
</ul>
<h2>Build Compute Library</h2>
<ul>
-<li>Building the Arm Compute Library: <div class="fragment"><div class="line">git clone https://github.com/ARM-software/ComputeLibrary.git</div><div class="line">cd ComputeLibrary/</div><div class="line">git checkout &lt;branch_name&gt;</div><div class="line">git pull</div><div class="line">scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags=&quot;-fPIC&quot; -j4 internal_only=0</div></div><!-- fragment --></li>
+<li>Building the Arm Compute Library: <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">git clone https://github.com/ARM-software/ComputeLibrary.git</div><div class="line">cd ComputeLibrary/</div><div class="line">git checkout &lt;tag_name&gt;</div><div class="line">scons arch=arm64-v8a neon=1 opencl=1 embed_kernels=1 extra_cxx_flags=&quot;-fPIC&quot; -j4 internal_only=0</div></div><!-- fragment --></li>
</ul>
-<p>For example, if you want to checkout release branch of 20.02: </p><div class="fragment"><div class="line">git checkout branches/arm_compute_20_02</div><div class="line">git pull</div></div><!-- fragment --><h2>Build Tensorflow</h2>
+<p>For example, if you want to checkout release tag of 21.02: </p><div class="fragment"><div class="line">git checkout v21.02</div></div><!-- fragment --><h2>Download ArmNN</h2>
+<div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">git clone https://github.com/ARM-software/armnn.git</div><div class="line">cd armnn</div><div class="line">git checkout &lt;branch_name&gt;</div><div class="line">git pull</div></div><!-- fragment --><p>For example, if you want to checkout release branch of 21.02: </p><div class="fragment"><div class="line">git checkout branches/armnn_21_02</div><div class="line">git pull</div></div><!-- fragment --><h2>Build Tensorflow</h2>
<ul>
-<li>Building Tensorflow version 2.3.1: <div class="fragment"><div class="line">git clone https://github.com/tensorflow/tensorflow.git</div><div class="line">cd tensorflow/</div><div class="line">git checkout fcc4b966f1265f466e82617020af93670141b009</div><div class="line">../armnn/scripts/generate_tensorflow_protobuf.sh ../tensorflow-protobuf ../google/x86_64_pb_install</div></div><!-- fragment --></li>
+<li>Building Tensorflow version 2.3.1: <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">git clone https://github.com/tensorflow/tensorflow.git</div><div class="line">cd tensorflow/</div><div class="line">git checkout fcc4b966f1265f466e82617020af93670141b009</div><div class="line">../armnn/scripts/generate_tensorflow_protobuf.sh ../tensorflow-protobuf ../google/x86_64_pb_install</div></div><!-- fragment --></li>
</ul>
<h2>Build Flatbuffer</h2>
<ul>
-<li>Building Flatbuffer version 1.12.0 <div class="fragment"><div class="line">wget -O flatbuffers-1.12.0.tar.gz https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz</div><div class="line">tar xf flatbuffers-1.12.0.tar.gz</div><div class="line">cd flatbuffers-1.12.0</div><div class="line">rm -f CMakeCache.txt</div><div class="line">mkdir build</div><div class="line">cd build</div><div class="line">cmake .. -DFLATBUFFERS_BUILD_FLATC=1 \</div><div class="line"> -DCMAKE_INSTALL_PREFIX:PATH=$HOME/armnn-devenv/flatbuffers \</div><div class="line"> -DFLATBUFFERS_BUILD_TESTS=0</div><div class="line">make all install</div></div><!-- fragment --></li>
-<li>Build arm64 version of flatbuffer <div class="fragment"><div class="line">mkdir build-arm64</div><div class="line">cd build-arm64</div><div class="line"># Add -fPIC to allow us to use the libraries in shared objects.</div><div class="line">CXXFLAGS=&quot;-fPIC&quot; cmake .. -DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc \</div><div class="line"> -DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ \</div><div class="line"> -DFLATBUFFERS_BUILD_FLATC=1 \</div><div class="line"> -DCMAKE_INSTALL_PREFIX:PATH=$HOME/armnn-devenv/flatbuffers-arm64 \</div><div class="line"> -DFLATBUFFERS_BUILD_TESTS=0</div><div class="line">make all install</div></div><!-- fragment --></li>
+<li>Building Flatbuffer version 1.12.0 <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">wget -O flatbuffers-1.12.0.tar.gz https://github.com/google/flatbuffers/archive/v1.12.0.tar.gz</div><div class="line">tar xf flatbuffers-1.12.0.tar.gz</div><div class="line">cd flatbuffers-1.12.0</div><div class="line">rm -f CMakeCache.txt</div><div class="line">mkdir build</div><div class="line">cd build</div><div class="line">cmake .. -DFLATBUFFERS_BUILD_FLATC=1 \</div><div class="line"> -DCMAKE_INSTALL_PREFIX:PATH=$HOME/armnn-devenv/flatbuffers \</div><div class="line"> -DFLATBUFFERS_BUILD_TESTS=0</div><div class="line">make all install</div></div><!-- fragment --></li>
+<li>Build arm64 version of flatbuffer <div class="fragment"><div class="line">cd ..</div><div class="line">mkdir build-arm64</div><div class="line">cd build-arm64</div><div class="line"># Add -fPIC to allow us to use the libraries in shared objects.</div><div class="line">CXXFLAGS=&quot;-fPIC&quot; cmake .. -DCMAKE_C_COMPILER=/usr/bin/aarch64-linux-gnu-gcc \</div><div class="line"> -DCMAKE_CXX_COMPILER=/usr/bin/aarch64-linux-gnu-g++ \</div><div class="line"> -DFLATBUFFERS_BUILD_FLATC=1 \</div><div class="line"> -DCMAKE_INSTALL_PREFIX:PATH=$HOME/armnn-devenv/flatbuffers-arm64 \</div><div class="line"> -DFLATBUFFERS_BUILD_TESTS=0</div><div class="line">make all install</div></div><!-- fragment --></li>
</ul>
<h2>Build Onnx</h2>
<ul>
-<li>Building Onnx <div class="fragment"><div class="line">git clone https://github.com/onnx/onnx.git</div><div class="line">cd onnx</div><div class="line">git fetch https://github.com/onnx/onnx.git 553df22c67bee5f0fe6599cff60f1afc6748c635 &amp;&amp; git checkout FETCH_HEAD</div><div class="line">export LD_LIBRARY_PATH=$HOME/armnn-devenv/google/x86_64_pb_install/lib:$LD_LIBRARY_PATH</div><div class="line">$HOME/armnn-devenv/google/x86_64_pb_install/bin/protoc onnx/onnx.proto --proto_path=. --proto_path=../google/x86_64_pb_install/include --cpp_out $HOME/armnn-devenv/onnx</div></div><!-- fragment --></li>
+<li>Building Onnx <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">git clone https://github.com/onnx/onnx.git</div><div class="line">cd onnx</div><div class="line">git fetch https://github.com/onnx/onnx.git 553df22c67bee5f0fe6599cff60f1afc6748c635 &amp;&amp; git checkout FETCH_HEAD</div><div class="line">LD_LIBRARY_PATH=$HOME/armnn-devenv/google/x86_64_pb_install/lib:$LD_LIBRARY_PATH \</div><div class="line">$HOME/armnn-devenv/google/x86_64_pb_install/bin/protoc \</div><div class="line">onnx/onnx.proto --proto_path=. --proto_path=../google/x86_64_pb_install/include --cpp_out $HOME/armnn-devenv/onnx</div></div><!-- fragment --></li>
</ul>
<h2>Build TfLite</h2>
<ul>
-<li>Building TfLite <div class="fragment"><div class="line">mkdir tflite</div><div class="line">cd tflite</div><div class="line">cp ../tensorflow/tensorflow/lite/schema/schema.fbs .</div><div class="line">../flatbuffers-1.12.0/build/flatc -c --gen-object-api --reflect-types --reflect-names schema.fbs</div></div><!-- fragment --></li>
+<li>Building TfLite <div class="fragment"><div class="line">cd $HOME/armnn-devenv</div><div class="line">mkdir tflite</div><div class="line">cd tflite</div><div class="line">cp ../tensorflow/tensorflow/lite/schema/schema.fbs .</div><div class="line">../flatbuffers-1.12.0/build/flatc -c --gen-object-api --reflect-types --reflect-names schema.fbs</div></div><!-- fragment --></li>
</ul>
<h2>Build Arm NN</h2>
<ul>
-<li>Compile Arm NN for arm64: <div class="fragment"><div class="line">git clone https://github.com/ARM-software/armnn.git</div><div class="line">cd armnn</div><div class="line">git checkout &lt;branch_name&gt;</div><div class="line">git pull</div><div class="line">mkdir build</div><div class="line">cd build</div></div><!-- fragment --></li>
-</ul>
-<p>For example, if you want to checkout release branch of 20.02: </p><div class="fragment"><div class="line">git checkout branches/armnn_20_02</div><div class="line">git pull</div></div><!-- fragment --><ul>
-<li>Use CMake to configure your build environment, update the following script and run it from the armnn/build directory to set up the Arm NN build: <div class="fragment"><div class="line">#!/bin/bash</div><div class="line">export CXX=aarch64-linux-gnu-g++ \</div><div class="line">export CC=aarch64-linux-gnu-gcc \</div><div class="line">cmake .. \</div><div class="line">-DARMCOMPUTE_ROOT=$HOME/armnn-devenv/ComputeLibrary \</div><div class="line">-DARMCOMPUTE_BUILD_DIR=$HOME/armnn-devenv/ComputeLibrary/build/ \</div><div class="line">-DBOOST_ROOT=$HOME/armnn-devenv/boost_arm64_install/ \</div><div class="line">-DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 \</div><div class="line">-DCAFFE_GENERATED_SOURCES=$HOME/armnn-devenv/caffe/build/src \</div><div class="line">-DBUILD_CAFFE_PARSER=1 \</div><div class="line">-DONNX_GENERATED_SOURCES=$HOME/armnn-devenv/onnx \</div><div class="line">-DBUILD_ONNX_PARSER=1 \</div><div class="line">-DTF_GENERATED_SOURCES=$HOME/armnn-devenv/tensorflow-protobuf \</div><div class="line">-DBUILD_TF_PARSER=1 \</div><div class="line">-DBUILD_TF_LITE_PARSER=1 \</div><div class="line">-DTF_LITE_GENERATED_PATH=$HOME/armnn-devenv/tflite \</div><div class="line">-DFLATBUFFERS_ROOT=$HOME/armnn-devenv/flatbuffers-arm64 \</div><div class="line">-DFLATC_DIR=$HOME/armnn-devenv/flatbuffers-1.12.0/build \</div><div class="line">-DPROTOBUF_ROOT=$HOME/armnn-devenv/google/x86_64_pb_install \</div><div class="line">-DPROTOBUF_ROOT=$HOME/armnn-devenv/google/x86_64_pb_install/ \</div><div class="line">-DPROTOBUF_LIBRARY_DEBUG=$HOME/armnn-devenv/google/arm64_pb_install/lib/libprotobuf.so.24.0.0 \</div><div class="line">-DPROTOBUF_LIBRARY_RELEASE=$HOME/armnn-devenv/google/arm64_pb_install/lib/libprotobuf.so.24.0.0</div></div><!-- fragment --></li>
+<li>Compile Arm NN for arm64: <div class="fragment"><div class="line">cd $HOME/armnn-devenv/armnn</div><div class="line">mkdir build</div><div class="line">cd build</div></div><!-- fragment --></li>
+<li>Use CMake to configure your build environment, update the following script and run it from the armnn/build directory to set up the Arm NN build: <div class="fragment"><div class="line">#!/bin/bash</div><div class="line">CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc cmake .. \</div><div class="line">-DARMCOMPUTE_ROOT=$HOME/armnn-devenv/ComputeLibrary \</div><div class="line">-DARMCOMPUTE_BUILD_DIR=$HOME/armnn-devenv/ComputeLibrary/build/ \</div><div class="line">-DBOOST_ROOT=$HOME/armnn-devenv/boost_arm64_install/ \</div><div class="line">-DARMCOMPUTENEON=1 -DARMCOMPUTECL=1 -DARMNNREF=1 \</div><div class="line">-DCAFFE_GENERATED_SOURCES=$HOME/armnn-devenv/caffe/build/src \</div><div class="line">-DBUILD_CAFFE_PARSER=1 \</div><div class="line">-DONNX_GENERATED_SOURCES=$HOME/armnn-devenv/onnx \</div><div class="line">-DBUILD_ONNX_PARSER=1 \</div><div class="line">-DTF_GENERATED_SOURCES=$HOME/armnn-devenv/tensorflow-protobuf \</div><div class="line">-DBUILD_TF_PARSER=1 \</div><div class="line">-DBUILD_TF_LITE_PARSER=1 \</div><div class="line">-DTF_LITE_GENERATED_PATH=$HOME/armnn-devenv/tflite \</div><div class="line">-DFLATBUFFERS_ROOT=$HOME/armnn-devenv/flatbuffers-arm64 \</div><div class="line">-DFLATC_DIR=$HOME/armnn-devenv/flatbuffers-1.12.0/build \</div><div class="line">-DPROTOBUF_ROOT=$HOME/armnn-devenv/google/x86_64_pb_install \</div><div class="line">-DPROTOBUF_ROOT=$HOME/armnn-devenv/google/x86_64_pb_install/ \</div><div class="line">-DPROTOBUF_LIBRARY_DEBUG=$HOME/armnn-devenv/google/arm64_pb_install/lib/libprotobuf.so.23.0.0 \</div><div class="line">-DPROTOBUF_LIBRARY_RELEASE=$HOME/armnn-devenv/google/arm64_pb_install/lib/libprotobuf.so.23.0.0</div></div><!-- fragment --></li>
<li>If you want to include standalone sample dynamic backend tests, add the argument to enable the tests and the dynamic backend path to the CMake command: <div class="fragment"><div class="line">-DSAMPLE_DYNAMIC_BACKEND=1 \</div><div class="line">-DDYNAMIC_BACKEND_PATHS=$SAMPLE_DYNAMIC_BACKEND_PATH</div></div><!-- fragment --></li>
<li>Run the build <div class="fragment"><div class="line">make -j32</div></div><!-- fragment --></li>
</ul>
<h2>Build Standalone Sample Dynamic Backend</h2>
<ul>
-<li>The sample dynamic backend is located in armnn/src/dynamic/sample <div class="fragment"><div class="line">mkdir build</div><div class="line">cd build</div></div><!-- fragment --></li>
-<li>Use CMake to configure your build environment, update the following script and run it from the armnn/src/dynamic/sample/build directory to set up the Arm NN build: <div class="fragment"><div class="line">#!/bin/bash</div><div class="line">export CXX=aarch64-linux-gnu-g++ \</div><div class="line">export CC=aarch64-linux-gnu-gcc \</div><div class="line">cmake .. \</div><div class="line">-DCMAKE_CXX_FLAGS=--std=c++14 \</div><div class="line">-DBOOST_ROOT=$HOME/armnn-devenv/boost_arm64_install/ \</div><div class="line">-DBoost_SYSTEM_LIBRARY=$HOME/armnn-devenv/boost_arm64_install/lib/libboost_system.a \</div><div class="line">-DARMNN_PATH=$HOME/armnn-devenv/armnn/build/libarmnn.so</div></div><!-- fragment --></li>
+<li>The sample dynamic backend is located in armnn/src/dynamic/sample <div class="fragment"><div class="line">cd $HOME/armnn-devenv/armnn/src/dynamic/sample</div><div class="line">mkdir build</div><div class="line">cd build</div></div><!-- fragment --></li>
+<li>Use CMake to configure your build environment, update the following script and run it from the armnn/src/dynamic/sample/build directory to set up the Arm NN build: <div class="fragment"><div class="line">#!/bin/bash</div><div class="line">CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc cmake .. \</div><div class="line">-DCMAKE_CXX_FLAGS=--std=c++14 \</div><div class="line">-DARMNN_PATH=$HOME/armnn-devenv/armnn/build/libarmnn.so</div></div><!-- fragment --></li>
<li>Run the build <div class="fragment"><div class="line">make</div></div><!-- fragment --></li>
</ul>
<h2>Run Unit Tests</h2>
<ul>
<li>Copy the build folder to an arm64 linux machine</li>
-<li>Copy the libprotobuf.so.15.0.1 library file to the build folder</li>
+<li>Copy the libprotobuf.so.23.0.0 library file to the build folder</li>
<li>If you enable the standalone sample dynamic tests, also copy libArm_SampleDynamic_backend.so library file to the folder specified as $SAMPLE_DYNAMIC_BACKEND_PATH when you build Arm NN</li>
<li>cd to the build folder on your arm64 machine and set your LD_LIBRARY_PATH to its current location:</li>
</ul>
-<div class="fragment"><div class="line">cd build/</div><div class="line">export LD_LIBRARY_PATH=&lt;current_working_directory&gt;</div></div><!-- fragment --><ul>
+<div class="fragment"><div class="line">cd build/</div></div><!-- fragment --><ul>
<li>Create a symbolic link to libprotobuf.so.24.0.0:</li>
</ul>
-<div class="fragment"><div class="line">ln -s libprotobuf.so.24.0.0 ./libprotobuf.so.24</div></div><!-- fragment --><ul>
+<div class="fragment"><div class="line">ln -s libprotobuf.so.23.0.0 ./libprotobuf.so.23</div></div><!-- fragment --><ul>
<li>Run the UnitTests:</li>
</ul>
-<div class="fragment"><div class="line">./UnitTests</div><div class="line">Running 567 test cases...</div><div class="line"></div><div class="line">*** No errors detected</div></div><!-- fragment --><h2>Troubleshooting and Errors:</h2>
+<div class="fragment"><div class="line">LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH ./UnitTests</div><div class="line">Running 4493 test cases...</div><div class="line"></div><div class="line">*** No errors detected</div></div><!-- fragment --><h2>Troubleshooting and Errors:</h2>
<h3>Error adding symbols: File in wrong format</h3>
<ul>
<li>When building Arm NN: <div class="fragment"><div class="line">/usr/local/lib/libboost_log.a: error adding symbols: File in wrong format</div><div class="line">collect2: error: ld returned 1 exit status</div><div class="line">CMakeFiles/armnn.dir/build.make:4028: recipe for target &#39;libarmnn.so&#39; failed</div><div class="line">make[2]: *** [libarmnn.so] Error 1</div><div class="line">CMakeFiles/Makefile2:105: recipe for target &#39;CMakeFiles/armnn.dir/all&#39; failed</div><div class="line">make[1]: *** [CMakeFiles/armnn.dir/all] Error 2</div><div class="line">Makefile:127: recipe for target &#39;all&#39; failed</div><div class="line">make: *** [all] Error 2</div></div><!-- fragment --></li>
@@ -251,7 +252,7 @@ $(document).ready(function(){initNavTree('md__build_guide_cross_compilation.xhtm
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="buildguides.xhtml">Installation and build Guides</a></li>
- <li class="footer">Generated on Thu Feb 25 2021 17:27:56 for ArmNN by
+ <li class="footer">Generated on Fri Mar 19 2021 15:26:08 for ArmNN by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
</ul>