![编译错误:库已安装(apt-cache 策略显示它)但 pkg-config 找不到它](https://linux22.com/image/1132305/%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF%EF%BC%9A%E5%BA%93%E5%B7%B2%E5%AE%89%E8%A3%85%EF%BC%88apt-cache%20%E7%AD%96%E7%95%A5%E6%98%BE%E7%A4%BA%E5%AE%83%EF%BC%89%E4%BD%86%20pkg-config%20%E6%89%BE%E4%B8%8D%E5%88%B0%E5%AE%83.png)
抱歉,我对 gcc 和从源代码安装软件包没有经验,无法解决我的问题:
我正在尝试安装韓國来自来源(github) 在 Ubuntu 14.04 上(原因是 0.7.1 版本中的可视化工具是彩色的)。
所以我之前安装了 mpd,并且来自存储库(版本 0.5.10)的 ncmpcpp 运行良好。
现在是我的安装步骤(使用 apt-get 删除 ncmpcpp 之后):
git clone https://github.com/arybczak/ncmpcpp
cd ncmpcpp
./autogen.sh
我收到的错误是:
configure: error: libmpdclient >= 2.8 is required!
但是,结果如下apt-cache policy libmpdclient2
:
libmpdclient2:
Installé : 2.9-1ubuntu1
Candidat : 2.9-1ubuntu1
Table de version :
*** 2.9-1ubuntu1 0
500 http://archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
100 /var/lib/dpkg/status
经过谷歌搜索后,我尝试了这个命令ldconfig -p | grep mpdclient
::
libmpdclient.so.2 (libc6,x86-64) => /usr/lib/libmpdclient.so.2
但我实际上可以验证 pkg-config 没有找到它:
$ pkg-config --exists --print-errors "libmpdclient2"
Package libmpdclient2 was not found in the pkg-config search path.
Perhaps you should add the directory containing `libmpdclient2.pc'
to the PKG_CONFIG_PATH environment variable
No package 'libmpdclient2' found
尝试使用,"libmpdclient"
结果相同。
我使用我的计算机搜索过sudo find / -name "libmpdclient2.pc"
但什么也没找到。
当您阅读 configure.ac 文件(我不熟悉其语法)时,您会看到这一点,我想知道它是否检查libmpdclient
或libmpdclient2
:
dnl ==============================
dnl = checking for libmpdclient2 =
dnl ==============================
PKG_CHECK_MODULES([libmpdclient], [libmpdclient >= 2.8], [
AC_SUBST(libmpdclient_CFLAGS)
AC_SUBST(libmpdclient_LIBS)
CPPFLAGS="$CPPFLAGS $libmpdclient_CFLAGS"
AC_CHECK_HEADERS([mpd/client.h],
LIBS="$LIBS $libmpdclient_LIBS"
,
AC_MSG_ERROR([missing mpd/client.h header])
)
],
AC_MSG_ERROR([libmpdclient >= 2.8 is required!])
)
抱歉发了这么长的帖子,我没什么线索了。我感觉这是一个为 Archlinux 用户而不是 Ubuntu 用户准备的软件包,但我非常喜欢它!
答案1
通常,在 Ubuntu 打包方案中,软件开发所需的文件使用库(包括头文件和.pc
提供的 pkg-config 文件)与运行时库本身分离,并作为单独的包提供。
通常,该包的名称与运行时库包的名称相同,并加上后缀-dev
,例如
libgimp2.0 - Libraries for the GNU Image Manipulation Program
libgimp2.0-dev - Headers and other files for compiling plugins for GIMP
然而在这种情况下,与之对应的开发包似乎libmpdclient2
很简单libmpdclient-dev
:
$ apt-cache policy libmpdclient2
libmpdclient2:
Installed: (none)
Candidate: 2.9-1ubuntu1
Version table:
2.9-1ubuntu1 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
尽管
$ apt-cache policy libmpdclient-dev
libmpdclient-dev:
Installed: (none)
Candidate: 2.9-1ubuntu1
Version table:
2.9-1ubuntu1 0
500 http://ca.archive.ubuntu.com/ubuntu/ trusty/universe amd64 Packages
安装libmpdclient-dev
软件包应该提供必要的开发文件并保持pkg-config
愉快,但你必须使用正确的软件包名称:
pkg-config --exists --print-errors libmpdclient