.. _libmemif_build_doc: Build Instructions ================== Install dependencies -------------------- :: sudo apt-get install -y git cmake autoconf pkg_config libtool Libmemif is now part of VPP repository. Follow fd.io wiki to pull source code from VPP repository. https://wiki.fd.io/view/VPP/Pulling,_Building,_Running,_Hacking_and_Pushing_VPP_Code#Pushing_Patches Libmemif is located under extras/libmemif. From the vpp workspace root directory:: mkdir -p extras/libmemif/build cd extras/libmemif/build cmake .. make install Verify installation: -------------------- :: ./examples/icmp_responder -? Use ``-?`` flag to display help:: LIBMEMIF EXAMPLE APP: icmp_responder_example ============================== libmemif version: 4.0, memif version: 2.0 ============================== In this example, memif endpoint connects to an external application. The example application can resolve ARP and reply to ICMPv4 packets. The program will exit once the interface is disconnected. ============================== Usage: icmp_responder [OPTIONS] Options: -r Interface role . Default: slave -s Socket path. Supports abstract socket using @ before the path. Default: /run/vpp/memif.sock -i Interface id. Default: 0 -a IPv4 address. Default: 192.168.1.1 -h Mac address. Default: aa:aa:aa:aa:aa:aa -? Show help and exit. -v Show libmemif and memif version information and exit. Running tests: -------------- Tests needs to their proper functioning Unity framework which is depended externally and cloned from official git repository:: mkdir -p extras/libmemif/build cd extras/libmemif/build cmake .. make ctest ``ctest`` will execute the tests and print out brief information about test suites with their statuses. In case we want verbose: :: ctest --verbose ctest --extra-verbose If there are any needs to debug tests, just add to cmake command ``-DCMAKE_BUILD_TYPE=Debug`` flag. Use Cases --------- Once the library is built/installed, refer to :ref:`libmemif_gettingstarted_doc` and :ref:`libmemif_examples_doc` for additional information on basic use cases and API usage.