我已经编写了一个小型库,并且我正在尝试将其设置为可与pkg-config一起使用,以供我组织中的那些以后可能需要使用它的人使用。因此,我的安装程序在/usr/local/lib/pkgconfig中放置了一个.pc文件,我最近发现,由于某种原因,这并不在pkg-config扫描其pc文件的默认目录列表中,尽管/usr/local是本地编译软件的规范前缀。因此,我需要将/usr/local/lib/pkgconfig添加到PKG_CONFIG_PATH中。
然而,我发现尽管在手册页中声明,pkg-config自己的错误消息和网上到处都是,pkg-config实际上并没有查看PKG_CONFIG_PATH。错误消息告诉我将/usr/local/lib/pkgconfig (它包含我正在查找的.pc文件)添加到PKG_CONFIG_PATH中,而我显然已经这样做了。
[chris@delphinus-a pkgconfig]$ pwd
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ ls
libexample.pc
[chris@delphinus-a pkgconfig]$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --cflags libexample
Package libexample was not found in the pkg-config search path.
Perhaps you should add the directory containing `libexample.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libexample', required by 'virtual:world', not found
[chris@delphinus-a pkgconfig]$ echo $PKG_CONFIG_PATH
/usr/local/lib/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --variable pc_path pkg-config
/usr/lib64/pkgconfig:/usr/share/pkgconfig
[chris@delphinus-a pkgconfig]$ pkg-config --version
1.6.3Libexample.pc的内容:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${prefix}/lib
includedir=${prefix}/include
Name: libexample
Description: example library.
Libs: -L${libdir} -lpthread -ltimeutil -lczmq -lzmq
Cflags: -I${includedir}那么,如果PKG_CONFIG_PATH确实是我需要设置的环境变量,那么如何让pkg-config实际使用它呢?或者我还遗漏了什么?这是在Fedora 31,FWIW。
发布于 2020-01-15 00:08:05
显然(从非常大的版本号判断),您正在使用pkg-config的其他实现:也就是说,从this page我推测它是一种叫做pkgconf的东西,旨在以某种方式替代FDO pkg-config程序。
为了成功使用PKG_CONFIG_PATH,我认为您应该安装一个来自FDO的真正的pkg-config,它的版本应该在0.29.x的范围内。
https://stackoverflow.com/questions/59737255
复制相似问题