在pkg-config中使用Requires vs Requires.private时,链接过程有何不同?

时间:2017-08-01 14:56:34

标签: shared-libraries pkg-config

我指的是这个guide to pkg-config来学习如何写一个。

在某个地方,它提到了以下需要 Requires.private 字段。

  

需要 Requires.private 定义所需的其他模块   图书馆。通常优选使用私有变体   需要避免将不必要的库暴露给程序   正在链接你的图书馆。如果程序不会使用   所需库的符号,不应直接链接到   那个图书馆。

我理解其含义,但我并不完全理解这两种情况下链接过程会有何不同。 即给定这两个版本的* .pc,链接过程将如何工作?

bar1.pc:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: bar
Description: The bar library
Version: 2.1.2
Requires.private: foo >= 0.7
Cflags: -I${includedir}
Libs: -L${libdir} -lbar

bar2.pc:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: bar
Description: The bar library
Version: 2.1.2
Requires.private: foo >= 0.7
Cflags: -I${includedir}
Libs: -L${libdir} -lbar

0 个答案:

没有答案