pkg-config找不到gtk + -3.0

时间:2018-04-25 20:45:41

标签: node.js debian gtk node-gyp pkg-config

我正在尝试使用libui-node来构建Node.js项目。

$ yarn add libui-node

这会出错:

  

node-gyp配置构建包中没有找到gtk + -3.0   pkg-config搜索路径。   也许你应该添加目录   包含`gtk + -3.0.pc'到PKG_CONFIG_PATH环境变量   没有包> gtk + -3.0'找到了gyp:调用' pkg-config gtk + -3.0   --cflags-only-I | sed s / -I // g'在binding.gyp中返回退出状态0。在尝试加载binding.gyp gyp ERR时!配置错误   ...

然后我按照说明操作:

$ pkg-config gtk+-3.0 --cflags-only-I | sed s/-I//g 
  

包gtk + -3.0是   在pkg-config搜索路径中找不到。也许你应该添加   目录包含`gtk + -3.0.pc'到PKG_CONFIG_PATH环境   变量没有包> gtk + -3.0'结果

但是,我已经使用此命令安装了gtk + -3.0:

$  sudo apt-get install build-essential libgtk-3-dev

我在Ubuntu 17.10上。

我的PKG_CONFIG_PATH

$ echo $PKG_CONFIG_PATH
  

/ usr / lib中/ pkgconfig:在/ usr /本地/ LIB / pkgconfig:

我应该如何配置我的系统以便它可以找到这个库?

2 个答案:

答案 0 :(得分:4)

编辑:

  

显示pkg-config查找.pc文件的默认位置,pkg-config --variable pc_path pkg-config更容易完成,如this SO answer中@BrettHale所述。这使用特殊的虚拟pkg-config包来公开pkg-config配置。这比解析调试日志或使用strace(它不止一次地保存了我的一天)更容易,但更重要的是在我们不知道在哪里查看时如何获取信息。

原始回答:

您不必设置PKG_CONFIG_PATH。通常,您的发行版使用的路径与pkg-config默认会查看的路径匹配。

pkg-config查找与GTK + 3相关联的.pc。当您安装了libgtk-3-dev开发包时,您会在其中找到它使用的.pc文件:< / p>

$ dpkg -L libgtk-3-dev | grep '\.pc'
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-wayland-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-unix-print-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-wayland-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gdk-x11-3.0.pc
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-x11-3.0.pc

这些结果适用于我的Ubuntu 14.04系统,但在Ubuntu 17.10 for amd64上,文件没有移动,它仍然是:

/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc

现在该文件名为gtk+-3.0.pc,因此pkg-config所期望的模块名称是没有.pc扩展名的名称,即gtk+-3.0。这有助于确保您没有在模块名称中输入拼写错误。

例如,

pkg-config --modversion gtk+3.0

会告诉你找不到gtk+3.0并且你应该更改PKG_CONFIG_PATH,但事实上真正的问题是它是错误的模块名称,因为缺少-个字符

现在,我们将在其默认配置中运行pkg-config,而不会自定义PKG_CONFIG_PATH。这将检查系统的默认行为,pkg-config仅查看其默认路径:

unset PKG_CONFIG_PATH
pkg-config --modversion gtk+-3.0

如果这返回GTK +的版本,那么你就完成了。如果您仍然收到错误消息,说明它未找到,那么您可以在调试日志中检查pkg-config默认情况下的位置。只需添加--debug选项:

pkg-config --debug --modversion gtk+-3.0

这将返回一个非常详细的日志,指出它检测到.pc文件的位置。 这里可能是Ubuntu 14.04系统的前几行:

Option --debug seen
Option --modversion seen
Error printing enabled by default due to use of --version, --libs, --cflags, --libs-only-l, --libs-only-L, --libs-only-other, --cflags-only-I, --cflags-only-other or --list. Value of --silence-errors: 0
Error printing enabled
Adding virtual 'pkg-config' package to list of known packages
Cannot open directory '/usr/local/lib/x86_64-linux-gnu/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/lib/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/share/pkgconfig' in package search path: No such file or directory
Scanning directory '/usr/lib/x86_64-linux-gnu/pkgconfig'
[...]

请注意以Cannot open directoryScanning directory开头的行。他们告诉你pkg-config正在寻找的地方。我们只显示:

$ pkg-config --debug --modversion gtk+-3.0 2>&1 | egrep "(Cannot open|Scanning) directory"
Cannot open directory '/usr/local/lib/x86_64-linux-gnu/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/lib/pkgconfig' in package search path: No such file or directory
Cannot open directory '/usr/local/share/pkgconfig' in package search path: No such file or directory
Scanning directory '/usr/lib/x86_64-linux-gnu/pkgconfig'
Scanning directory '/usr/lib/pkgconfig'
Scanning directory '/usr/share/pkgconfig'

现在您拥有所有搜索到的位置。这些在我的14.04和Ubuntu 17.04中是相同的(我在docker容器中检查过)。其中一些目录存在,另一些则不存在。您会注意到我/usr/lib/x86_64-linux-gnu/pkgconfig,因此找到了/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc

如果它不适合您,那么是的,您可以将其添加到PKG_CONFIG_PATH

export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig

现在应该返回pkg-config检测到的GTK +库的版本:

pkg-config --modversion gtk+-3.0

答案 1 :(得分:-1)

这是由于.bbappend文件从路径下面的gtk + 3中删除了x11

this.site

代替删除添加添加,它将成功构建。