Users can now generate the necessary linker args for their own applications using something like: PKG_CONFIG_PATH=build/lib/pkgconfig pkg-config --libs spdk_nvme Dependencies between libraries are included in the generated .pc files, so the user only needs to pass the top-level subsystems or individual SPDK libraries they are using in their application. Modules will automatically be added to the output if the associated library is specified. For example, specifying "spdk_bdev" will include the libraries not only for spdk_bdev, but also all of the bdev modules. Users still need to supply the -Wl,--no-as-needed or -Wl,--whole-archive flags. They cannot be added to the .pc files without increasing the length of the argument string by a factor of 15x to 20x. Modify the test/external_code/hello_world Makefile to use pkg-config to ensure this gets tested at some level in our autotest environment. Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Ie48a75f11969d5d775d514cf10bcb82d197eabfd Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4371 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> |
||
---|---|---|
.. | ||
hello_world | ||
passthru | ||
Makefile | ||
README.md | ||
test_make.sh |
This directory is meant to demonstrate how to link an external application and bdev module to the SPDK libraries. The makefiles contain six examples of linking against spdk libraries. They cover linking an application both with and without a custom bdev. For each of these categories, they also demonstrate linking against the spdk combined shared library, individual shared libraries, and static libraries.
This directory also contains a convenient test script, test_make.sh, which automates making SPDK and testing all six of these linker options. It takes a single argument, the path to an SPDK repository and should be run as follows:
sudo ./test_make.sh /path/to/spdk
The application hello_bdev
is a symlink and bdev module passthru_external
have been copied from their namesakes
in the top level SPDK github repository and don't have any special
functionality.