我正在尝试使用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:
我应该如何配置我的系统以便它可以找到这个库?
答案 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 directory
和Scanning 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
代替删除添加添加,它将成功构建。