c++ - 找不到-lMagick++-6.Q16

标签 c++ r gcc compilation imagemagick

我尝试安装 magick R 包,但出现错误:

g++ -std=gnu++11 -shared -L/path/apps/R/3.5.1-20180807-test/x86_64-linux-2.6-rhel6/lib64/R/lib -L/path/apps/R/static-zlib-gcc6.3/x86_64-linux-2.6-rhel6/lib -Wl,--exclude-libs,libz.a -Wl,--exclude-libs,libbz2.a -Wl,--exclude-libs,libcurl.a -Wl,--exclude-libs,libpcre.a -Wl,--as-needed -o magick.so RcppExports.o animation.o attributes.o base.o color.o composite.o config.o convolve.o device.o edit.o fonts.o options.o properties.o resize.o transformations.o -L/path/apps/R/static-zlib-gcc6.3/x86_64-linux-2.6-rhel6/lib/ /path/apps/R/static-zlib-gcc6.3/x86_64-linux-2.6-rhel6/lib/libcurl.a /path/apps/R/static-zlib-gcc6.3/x86_64-linux-2.6-rhel6/lib/libz.a -Wl,--exclude-libs,libz.a -Wl,--exclude-libs,libcurl.a -lidn -lssl -lcrypto -lldap -lrt -lcairo -L/path/apps/mysql/5.7.11/x86_64-linux-2.6-rhel6/lib -lmysqlclient -lpthread -lm -lrt -ldl -L/path/apps/R/static-zlib-gcc6.3/x86_64-linux-2.6-rhel6/lib -lxml2 -lz -lm -ldl -L/path/apps/V8/3.14/x86_64-linux-2.6-rhel6/lib64 -L/path/apps/openmpi/1.8.1/x86_64-linux-2.6-rhel6/gnu/lsf/lib -L/path/apps/imagemagick/7.0.7-8/x86_64-linux-2.6-rhel6/lib/pkgconfig -lMagick++-6.Q16 -L/path/apps/R/3.5.1-20180807-test/x86_64-linux-2.6-rhel6/lib64/R/lib -lR
/usr/bin/ld: cannot find -lMagick++-6.Q16
collect2: error: ld returned 1 exit status
make: *** [magick.so] Error 1
ERROR: compilation failed for package ‘magick’

我的 LIB_DIRINCLUDE_DIR 看起来像这样:

export LIB_DIR="$STATIC_LIB/lib/ $STATIC_LIB/lib/libcurl.a \
$STATIC_LIB/lib/libz.a -Wl,--exclude-libs,libz.a \
-Wl,--exclude-libs,libcurl.a -lidn -lssl -lcrypto -lldap -lrt \
-lcairo $MYSQL_LIBS $XML2_LIBS -L$V8_LIBS \
-L$MPI_HOME/lib \
-L/path/apps/imagemagick/7.0.7-8/x86_64-linux-2.6-rhel6/lib/pkgconfig"

export INCLUDE_DIR="$STATIC_LIB/include -I/usr/include/cairo \
-I/usr/include/pixman-1 -I/usr/include/freetype2 \
-I/usr/include/libpng12 \
-I$MPI_HOME/include \
-I/path/apps/imagemagick/7.0.7-8/x86_64-linux-2.6-rhel6/include/ImageMagick-7"

include 包含:

ls /path/apps/imagemagick/7.0.7-8/x86_64-linux-2.6-rhel6/include/ImageMagick-7
Magick++  MagickCore  Magick++.h  MagickWand

我找到了 this question但是我的 lib 目录包含一组类似的文件:

ls /path/apps/imagemagick/7.0.7-8/x86_64-linux-2.6-rhel6/lib/
ImageMagick-7.0.7               libMagickCore-7.Q16HDRI.so.4
libMagick++-7.Q16HDRI.a         libMagickCore-7.Q16HDRI.so.4.0.0
libMagick++-7.Q16HDRI.la        libMagickWand-7.Q16HDRI.a
libMagick++-7.Q16HDRI.so        libMagickWand-7.Q16HDRI.la
libMagick++-7.Q16HDRI.so.3      libMagickWand-7.Q16HDRI.so
libMagick++-7.Q16HDRI.so.3.0.0  libMagickWand-7.Q16HDRI.so.4
libMagickCore-7.Q16HDRI.a       libMagickWand-7.Q16HDRI.so.4.0.0
libMagickCore-7.Q16HDRI.la      pkgconfig
libMagickCore-7.Q16HDRI.so

我正在使用 imagemagick 7 那么为什么它仍然需要来自版本 6 的一些标志/arg -lMagick++-6.Q16

最佳答案

如果 pkg-configMagick++-config 不可用,magickdefaults to ImageMagick v6 :

PKG_LIBS="-lMagick++-6.Q16"

因此您必须安装版本 6。此外,您还可以 report an issue在没有 pkg-config/Magick++-config 的情况下要求支持版本 7。

或者,您可以尝试让 pkg-config/Magick++-config 在您的机器上运行。如果可以使用 pkg-config/Magick++-config,则直接使用那里提供的标志。

关于c++ - 找不到-lMagick++-6.Q16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51921015/

相关文章:

c++ - 在 std::vector 中插入迭代器范围

r - R 中的嵌套 for 循环有问题

r - 方括号 `[` 函数的文档

c++ - 为什么 GCC 需要在模板中额外声明而 VS 不需要?

c++ - std::min_element 编译错误

c++ - 带有 C++ 程序控制台输入的 Sublime Text

r - 将滚动窗口回归应用于R中的XTS系列

c++ - g++ 找不到共享库

c - 使用变量内联汇编设置寄存器

c++ - dlclose() 没有卸载链接到 boost 的 .so 文件