如何让 pkg-config 使用 PKG_CONFIG_PATH?
How to get pkg-config to use PKG_CONFIG_PATH?
我已经编写了一个小型库,我正在尝试将其设置为可与 pkg-config 一起使用,以供我组织中稍后可能需要使用它的人员使用。所以我的安装程序在 /usr/local/lib/pkgconfig 中放置了一个 .pc 文件,而且我最近发现由于某种原因,尽管 /usr/local 这不在 pkg-config 扫描其 pc 文件的默认目录列表中] 是本地编译软件的规范前缀。所以,我需要将 /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.3
libexample.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。
显然(根据非常大的版本号判断),您正在使用 pkg-config 的一些其他实现:即,从 this page 我收集到它叫做 pkgconf
并且旨在以某种方式替换 FDO pkg-config
程序。
要成功 PKG_CONFIG_PATH
,我想,你应该从 FDO 安装一个真正的 pkg-config
,它的版本应该在 0.29.x.[=15= 范围内]
我已经编写了一个小型库,我正在尝试将其设置为可与 pkg-config 一起使用,以供我组织中稍后可能需要使用它的人员使用。所以我的安装程序在 /usr/local/lib/pkgconfig 中放置了一个 .pc 文件,而且我最近发现由于某种原因,尽管 /usr/local 这不在 pkg-config 扫描其 pc 文件的默认目录列表中] 是本地编译软件的规范前缀。所以,我需要将 /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.3
libexample.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。
显然(根据非常大的版本号判断),您正在使用 pkg-config 的一些其他实现:即,从 this page 我收集到它叫做 pkgconf
并且旨在以某种方式替换 FDO pkg-config
程序。
要成功 PKG_CONFIG_PATH
,我想,你应该从 FDO 安装一个真正的 pkg-config
,它的版本应该在 0.29.x.[=15= 范围内]