从gem安装RMagick时出错
时间:2020-03-06 14:42:06 来源:igfitidea点击:
尝试安装RMagick gem失败,并显示有关找不到ImageMagick库的错误,即使我确定已安装它们也是如此。
gem install rmagick的相关输出为:
checking for InitializeMagick() in -lMagick... no checking for InitializeMagick() in -lMagickCore... no checking for InitializeMagick() in -lMagick++... no Can't install RMagick 2.6.0. Can't find the ImageMagick library or one of the dependent libraries. Check the mkmf.log file for more detailed information. *** extconf.rb failed ***
并查看mkmf.log显示:
have_library: checking for InitializeMagick() in -lMagick... -------------------- no "/usr/local/bin/gcc -o conftest -I. -I/usr/local/lib/ruby/1.8/i386-solaris2.10 -I. -I/usr/local/include/ImageMagick -I/usr/local/include/ImageMagick conftest.c -L. - L/usr/local/lib -Wl,-R/usr/local/lib -L/usr/local/lib -L/usr/local/lib -R/usr/local/lib -lfreetype -lz -L/usr/local/lib -L/usr/local/lib -lMagickCore -lruby-static - lMagick -ldl -lcrypt -lm -lc" ld: fatal: library -lMagick: not found ld: fatal: File processing errors. No output written to conftest
这是在Solaris 10 x86上的ImageMagick版本6.4.3和RMagick版本2.6.0
如果需要在LDFLAGS中添加一些内容,那对我来说还不清楚。我从源代码安装了ImageMagick,它应该位于通常的位置。 IE,
# ls -l /usr/local/lib/ | grep -i magick drwxr-xr-x 5 root root 512 Sep 24 23:09 ImageMagick-6.4.3/ -rw-r--r-- 1 root root 10808764 Sep 25 02:09 libMagickCore.a -rwxr-xr-x 1 root root 1440 Sep 25 02:09 libMagickCore.la* -rw-r--r-- 1 root root 2327072 Sep 25 02:09 libMagickWand.a -rwxr-xr-x 1 root root 1472 Sep 25 02:09 libMagickWand.la*
ImageMagick-6.4.3 /没什么有趣的,我找不到其他可能指向gem install的文件。
任何建议将不胜感激!
谷歌搜索并没有太大帮助。
谢谢 -
解决方案
链接器在标准位置找不到libMagick。也许我们将ImageMagick安装在必须通过LDFLAGS指定的非标准位置?
问题解决了。
RMagick无法找到ImageMagick,因为我忽略了构建共享库(没有安装.so文件,我们可以从原始问题的" ls"中看到)。解决的办法是在我的配置选项中添加--with-shared
。
然而,这引起了其他问题。最值得注意的是,make
失败,并出现libiconv的"未定义符号"消息。通过将CFLAGS设置为指向libiconv可以解决此问题:
export CFLAGS="-liconv"
最终,我成功的configure命令是:
./configure --disable-static --with-modules --without-perl --with-quantum-depth=8 --with-bzlib=no --with-libiconv
之后," make"," make install"和" gem install rmagick"均运行正常。
谢谢,
[R