我正在尝试在Ubuntu 16.04 LTS上安装Sharp。
我本来没有VIP,所以我安装了
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是全新安装(截至昨天),以防万一。
答案 0 :(得分:0)
似乎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
。
答案 1 :(得分:0)
您有两个问题(我认为):首先,Ubuntu 16.04随附的nodejs
是4.x,并且在2018年4月不再受支持-当前受支持的nodejs
是8。 X。其次,Ubuntu 16.04附带的libvips
也很古老,不能与当前的sharp
很好地配合。
幸运的是,修复很简单:使用nodejs
6、8和10,sharp
将自动为您下载libvips
二进制文件。
我使用了本指南来安装nodejs
8:
然后:
npm install sharp
一切正常。此处为Dockerfile
,以供参考:
https://github.com/jcupitt/docker-builds/blob/master/sharp-ubuntu16.04/Dockerfile
答案 2 :(得分:0)
我遇到了完全相同的问题。而对我来说,我是通过从官方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:无法打开共享对象文件:没有那个文件或目录
这可以通过以下单个命令解决:
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/usrlocal.conf'