尝试安装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,它应该在通常的地方。即,
# 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安装的文件。
任何建议都将不胜感激! 谷歌搜索并没有太大的帮助。
谢谢 -
答案 0 :(得分:2)
问题解决了。
RMagick无法找到ImageMagick因为我忽略了构建共享对象(没有安装.so文件,因为你可以从原始问题中的“ls”看到)。解决方案是将--with-shared
添加到我的配置选项中。
make
失败了libiconv的“未定义符号”消息。通过将CFLAGS设置为指向libiconv来解决这个问题:
export CFLAGS="-liconv"
最终,我成功的配置命令是:
./configure --disable-static --with-modules --without-perl --with-quantum-depth=8 --with-bzlib=no --with-libiconv
之后,make
,make install
和gem install rmagick
一切顺利。
感谢,
[R
答案 1 :(得分:1)
我在OpenSuSE 11.4上遇到了这个问题 - 在安装了一大堆软件包之后,结果发现libtool是缺少的元素....
答案 2 :(得分:0)
链接器在标准位置找不到libMagick。也许你在非标准的地方安装了ImageMagick,你必须通过LDFLAGS指定?