res*_*way 7 apt pkg-config yum apt-get
许多makefile使用pkg-config,但名称与包管理器无关(例如yum/apt).如何将pkg-config名称映射到它们?有诀窍吗?
示例:如果我这样做yum searchName- 查看名称并接近pkg-config的名称
结果:
$ pkg-config --libs dbus-glib-0
Package dbus-glib-0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `dbus-glib-0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'dbus-glib-0' found
$ sudo yum install dbus-glib
Loaded plugins: langpacks, refresh-packagekit
Package dbus-glib-0.100-5.fc19.i686 already installed and latest version
Nothing to do
$ sudo yum install dbus-glib-0
Loaded plugins: langpacks, refresh-packagekit
No package dbus-glib-0 available.
Error: Nothing to do
Run Code Online (Sandbox Code Playgroud)
在 apt-get 的情况下,如果你有一些软件通过 pkg-config 抱怨这个丢失的包,例如:
配置:错误:未满足包要求(gtk+-2.0 >= 2.8): 未找到包“ gtk+-2.0 ” 考虑调整 PKG_CONFIG_PATH 环境变量,如果你 在非标准前缀中安装的软件。 或者,您可以设置环境变量 GTK_CFLAGS 和 GTK_LIBS 以避免需要调用 pkg-config。 有关更多详细信息,请参阅 pkg-config 手册页。 错误:无法运行 ./configure,这是配置 banshee 所必需的
那么这意味着配置脚本正在寻找gtk+-2.0pkgconfig 包。
然后,你可以做的是:
$ sudo apt-get install apt-file ... $ apt-文件更新 ... $ apt-file 搜索gtk+-2.0 | grep "\.pc" libgtk2.0-dev: /usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-2.0.pc
这意味着您可以安装软件包libgtk2.0-dev:
sudo apt-get install libgtk2.0-dev
Run Code Online (Sandbox Code Playgroud)
并且依赖性将得到满足。
在原始问题的特殊情况下:
$ apt-file search --package-only dbus-glib-1.pc
libdbus-glib-1-dev
Run Code Online (Sandbox Code Playgroud)
(dbus-glib-0 似乎太旧了,无法显示在我的系统中。)
小智 1
pkg-config 文件通常由-devel软件包提供,因此在大多数情况下foo.pc由libfoo-devel. 这仍然是猜测,但有两个捷径:
.pc如果您知道文件的最终位置,则按路径名安装
$> yum install /usr/lib64/pkgconfig/foo.pc
Run Code Online (Sandbox Code Playgroud)
这适用于任何文件,但您仍然需要猜测文件.pc在哪里。最好的方法是使用实际的 pkgconfig 要求:
$> yum install "pkgconfig(foo)"
Run Code Online (Sandbox Code Playgroud)
使用引号可以避免 shell 尝试解释括号。
| 归档时间: |
|
| 查看次数: |
3222 次 |
| 最近记录: |