我用 C 语言编写了一个包含一些文件的项目。为了让用户轻松启动程序,我开始生成 cfg 文件。为此,我安装了 libconf。不幸的是,在使用 libconfig 示例文件进行编译时,我收到了此消息。
gcc $(pkg-config --cflags --libs libconfig) example1.c -o example1 example.cfg
example1.c: In Function »main«: example1.c:43:13: Warning: Format »%s« expected argumenttyp »char *«, but argument 3 has typ »int« [-Wformat]
.....
正如我被告知我安装了sudo apt-get 安装 libconfig8-dev并希望不设置任何 PKG_CONFIG_PATH。看起来它编译不正确。
答案1
您如何获得并安装libconfig
?
如果你刚刚安装了该libconfig8
包,那么不够。您还需要安装-dev
与之对应的软件包,以便提供开发文件(标头、静态链接库和 pkg-config 数据)。我能够找到 libconfig 的精确位置packages.ubuntu.com。 所以
sudo apt-get install libconfig8-dev
应该可以解决问题。
正如你所看到的这里,此包的文件列表包含以下文件路径:
/usr/lib/pkgconfig/libconfig.pc
这正是pkg-config
需要能够拉出CFLAGS
和LDFLAGS
对应的文件libconfig
。
此目录位于 Ubuntu 的“内置”pkg-config
搜索路径中。因此,无需设置。只有在需要查找目录PKG_CONFIG_PATH
时才需要设置该环境变量pkg-config
以外默认搜索的内容。因此,如果您编译了一个程序并将其安装在 中,并且需要将/home/user/apps/blah
文件提供给,则您需要设置:/home/user/apps/blah/lib/pkg-config/libblah.pc
pkg-config
export PKG_CONFIG_PATH=/home/user/apps/blah/lib/pkg-config/libblah.pc
以pkg-config
找到该的安装libblah.pc
。
但是,由于您是libconfig
从 Ubuntu 本身安装,它会自动将 .pc 文件“放入”正确的搜索目录中。