安装 Sharp /usr/include/vips/vips8:35:25:致命错误:glib-object.h
Posted
技术标签:
【中文标题】安装 Sharp /usr/include/vips/vips8:35:25:致命错误:glib-object.h【英文标题】:Installing Sharp /usr/include/vips/vips8:35:25: fatal error: glib-object.h 【发布时间】:2019-04-01 00:30:07 【问题描述】:我正在尝试在 Ubuntu 16.04 LTS 上安装Sharp。
我本来没有vips,所以安装了
sudo apt-get install libvips-dev
修复了第一个错误,但现在我遇到了另一个错误:
In file included from ../src/common.cc:25:0:
/usr/include/vips/vips8:35:25: fatal error: glib-object.h: No such file or directory
compilation terminated.
sharp.target.mk:115: recipe for target 'Release/obj.target/sharp/src/common.o' failed
make: *** [Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/home/rachel/node_modules/sharp/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/share/node-gyp/lib/build.js:269:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.15.0-36-generic
gyp ERR! command "/usr/bin/nodejs" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/rachel/node_modules/sharp
gyp ERR! node -v v4.2.6
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok
所以,我弄清楚 glib-object.h 属于哪个包并尝试安装它,但它已经安装了。事实上,该文件确实存在。
/usr/include/glib-2.0/glib-object.h
经过大量浏览,我发现了一个类似的问题,他们询问标头的位置是否在 pkg-config --cflags vips-cpp 中。对于提问者来说不是,这导致了修复,但对我来说,它是(倒数第二个)。
> pkg-config --cflags vips-cpp
-pthread -fopenmp -DMAGICKCORE_HDRI_ENABLE=0
-DMAGICKCORE_QUANTUM_DEPTH=16
-fopenmp -DMAGICKCORE_HDRI_ENABLE=0
-DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libgsf-1
-I/usr/include/libxml2
-I/usr/include/x86_64-linux-gnu//ImageMagick-6
-I/usr/include/ImageMagick-6
-I/usr/include/x86_64-linux-gnu//ImageMagick-6
-I/usr/include/ImageMagick-6
-I/usr/include/orc-0.4
-I/usr/include/OpenEXR
-I/usr/include/openslide
-I/usr/lib/x86_64-linux-gnu/hdf5/serial/include
-I/usr/include/pango-1.0
-I/usr/include/harfbuzz
-I/usr/include/pango-1.0
-I/usr/include/freetype2
-I/usr/include/x86_64-linux-gnu
-I/usr/include/libpng12
-I/usr/include/libexif
-I/usr/include/glib-2.0
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include
在验证文件存在并且其文件夹包含在上述输出中后,我没有找到任何解决方案。我完全不知道下一步该做什么,所以任何建议都将不胜感激。
npm 是全新安装(截至昨天),以防万一。
【问题讨论】:
Sharp 应该在 Ubuntu 14.04+ 上包含一个 libvips 二进制文件,请参阅 sharp.pixelplumbing.com/en/stable/install ...您只需要npm install sharp
。我会卸载 Ubuntu libvips 并尝试从 npm 再次安装Sharp。
谢谢大家。我最终决定只升级我的操作系统,它修复了所有问题。如果不升级,我无法测试看看有什么方法可以修复它,但我得出的结论是它使用了不受支持的旧库。
【参考方案1】:
看起来 vips-cpp 正在寻找 GObject,而不是 GLib,但 pkg-config 文件只要求 GLib。 GObject 是基于 GLib 的,它们关系密切,但它们不是同一个项目。
您应该以某种方式将gobject-2.0
添加到 pkg-config 依赖项中。您可以在清晰的构建系统中执行此操作(无论它在哪里拉入 vips-cpp
包,它也依赖于 gobject-2.0
)。您还可以修复您的 vips-cpp
pkg-config 文件以添加 gobject-2.0
作为依赖项; where the file is depends on your architecture,但它是$LIBDIR/pkg-config/vips-cpp.pc
。
【讨论】:
嗨,我是 libvips 的维护者。 vips-cpp.pc 要求 gobject: github.com/jcupitt/libvips/blob/master/vips-cpp.pc.in#L9 所以我认为应该没问题。 OP 运行的是旧版本的 Ubuntu;也许它有来自 before gobject-2.0 was added 的 libvips 版本? 哦,是的,OP 不是从源代码构建的,他们使用的是发行版 libvips。会很古老我也会尝试使用更新的节点。 我在 ubuntu 18.04,节点 12.x 中遇到了同样的问题,但能够通过从源代码构建 libvips 来解决它。【参考方案2】:您有两个问题(我认为):首先,Ubuntu 16.04 附带的 nodejs
是 4.x,而早在 2018 年 4 月就不再支持了——当前支持的 nodejs
是 8.x。其次,Ubuntu 16.04 附带的libvips
也很古老,与现在的sharp
不兼容。
幸运的是,修复很简单:使用 nodejs
6、8 和 10,sharp
会自动为您下载 libvips
二进制文件。
我使用本指南安装nodejs
8:
https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-16-04#how-to-install-using-a-ppa
那么就:
npm install sharp
一切正常。这里是Dockerfile
,供参考:
https://github.com/jcupitt/docker-builds/blob/master/sharp-ubuntu16.04/Dockerfile
【讨论】:
【参考方案3】:我遇到了完全相同的问题。而对我来说,我通过从官方 github 编译 libvips 来解决。以下是说明:https://libvips.github.io/libvips/install.html
git clone git://github.com/jcupitt/libvips.git
cd libvips/
# install dependencies if you have errors during autogen.sh
#sudo apt install gtk-doc-tools
#sudo apt install gobject-introspection
./autogen.sh
make
sudo make install
解决glib-object.h问题后,你可能会遇到另一个错误:libvips-cpp.so.42: cannot open shared object file: No such file or directory
这可以通过以下单个命令解决:
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/usrlocal.conf'
【讨论】:
以上是关于安装 Sharp /usr/include/vips/vips8:35:25:致命错误:glib-object.h的主要内容,如果未能解决你的问题,请参考以下文章
解决前端安装sharp出错问题sharp: Command failed.
在 webpack 中使用 node-loader 安装“sharp”模块出现问题