A build directory is specific to a configuration that includes architecture + execution environment + toolchain.
It is possible to have several build directories sharing the same sources with different configurations.
-For instance, to create a new build directory called my_sdk_build_dir using the default configuration template config/defconfig_x86_64-linuxapp,
+For instance, to create a new build directory called my_sdk_build_dir using the default configuration template config/defconfig_x86_64-linux,
we use:
.. code-block:: console
cd ${RTE_SDK}
- make config T=x86_64-native-linuxapp-gcc O=my_sdk_build_dir
+ make config T=x86_64-native-linux-gcc O=my_sdk_build_dir
This creates a new my_sdk_build_dir directory. After that, we can compile by doing:
make O=my_sdk_build_dir
-The content of the my_sdk_build_dir is then:
-
-::
-
- -- .config # used configuration
-
- -- Makefile # wrapper that calls head Makefile
- # with $PWD as build directory
-
-
- -- build #All temporary files used during build
- +--app # process, including . o, .d, and .cmd files.
- | +-- test # For libraries, we have the .a file.
- | +-- test.o # For applications, we have the elf file.
- | `-- ...
- +-- lib
- +-- librte_eal
- | `-- ...
- +-- librte_mempool
- | +-- mempool-file1.o
- | +-- .mempool-file1.o.cmd
- | +-- .mempool-file1.o.d
- | +-- mempool-file2.o
- | +-- .mempool-file2.o.cmd
- | +-- .mempool-file2.o.d
- | `-- mempool.a
- `-- ...
-
- -- include # All include files installed by libraries
- +-- librte_mempool.h # and applications are located in this
- +-- rte_eal.h # directory. The installed files can depend
- +-- rte_spinlock.h # on configuration if needed (environment,
- +-- rte_atomic.h # architecture, ..)
- `-- \*.h ...
-
- -- lib # all compiled libraries are copied in this
- +-- librte_eal.a # directory
- +-- librte_mempool.a
- `-- \*.a ...
-
- -- app # All compiled applications are installed
- + --test # here. It includes the binary in elf format
-
Refer to
:ref:`Development Kit Root Makefile Help <Development_Kit_Root_Makefile_Help>`
for details about make commands that can be used from the root of DPDK.
.. code-block:: console
export RTE_SDK=/opt/DPDK
- export RTE_TARGET=x86_64-native-linuxapp-gcc
+ export RTE_TARGET=x86_64-native-linux-gcc
cd /path/to/my_app
For a new application, the user must create their own Makefile that includes some .mk files, such as
Misc
^^^^
-* rte.doc.mk: Documentation in the development kit framework
-
* rte.gnuconfigure.mk: Build an application that is configure-based.
* rte.subdir.mk: Build several directories in the development kit framework.
Which ``dpdk-pmdinfogen`` scans for. Using this information other relevant
bits of data can be exported from the object file and used to produce a
hardware support description, that ``dpdk-pmdinfogen`` then encodes into a
-json formatted string in the following format:
+JSON formatted string in the following format:
.. code-block:: c
* RTE_TOOLCHAIN: Defines the toolchain (gcc , icc).
It is the same value as CONFIG_RTE_TOOLCHAIN but without the double-quotes around the string.
-* RTE_EXEC_ENV: Defines the executive environment (linuxapp).
+* RTE_EXEC_ENV: Defines the executive environment (linux).
It is the same value as CONFIG_RTE_EXEC_ENV but without the double-quotes around the string.
* RTE_KERNELDIR: This variable contains the absolute path to the kernel sources that will be used to compile the kernel modules.