From: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxx> Static linking userspace programs such as nftables against libnftnl currently doesn't work out of the box, because libnftnl is linked against libmnl, but this isn't expressed in libnftnl pkg-config file: CCLD nft [...]/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libnftnl.a(table.o): In function `_nft_table_nlmsg_parse': table.c:(.text+0x480): undefined reference to `_mnl_attr_parse' table.c:(.text+0x492): undefined reference to `_mnl_attr_get_str' table.c:(.text+0x4a8): undefined reference to `_mnl_attr_get_u32' table.c:(.text+0x4ca): undefined reference to `_mnl_attr_get_u32' [...] The Libs.private field is specifically designed for such usage: >From pkg-config documentation: Requires.private: A list of packages required by this package. The difference from Requires is that the packages listed under Requires.private are not taken into account when a flag list is computed for dynamically linked executable (i.e., when --static was not specified). In the situation where each .pc file corresponds to a library, Requires.private shall be used exclusively to specify the dependencies between the libraries. Therefore, this patch adds a reference to libmnl in the Requires.private field of libnftnl pkg-config file. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@xxxxxxxxxxx> [baruch: use Requires.private; update commit log] Signed-off-by: Baruch Siach <baruch@xxxxxxxxxx> --- v2: Use Requires.private (Jan Engelhardt) --- libnftnl.pc.in | 1 + 1 file changed, 1 insertion(+) diff --git a/libnftnl.pc.in b/libnftnl.pc.in index fd5cc6ac5ca4..ef94d749dd86 100644 --- a/libnftnl.pc.in +++ b/libnftnl.pc.in @@ -10,6 +10,7 @@ Description: Netfilter nf_tables infrastructure library URL: http://netfilter.org/projects/libnftnl/ Version: @VERSION@ Requires: +Requires.private: libmnl Conflicts: Libs: -L${libdir} -lnftnl Cflags: -I${includedir} -- 2.20.1