代码之家  ›  专栏  ›  技术社区  ›  Taz jason

找不到-lMagick++-6.Q16

  •  0
  • Taz jason  · 技术社区  · 7 年前

    我试着安装 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_DIR INCLUDE_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 所以为什么它仍然需要一些flag/arg -lMagick++-6.Q16 从版本 6 ?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Ralf Stubner    7 年前

    如果 pkg-config Magick++-config 不可用 magick defaults to ImageMagick v6 :

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

    所以你必须安装版本6。此外,你还可以 report an issue 如果安装时没有 pkg-config/Magick++-config

    或者你可以试着 pkg配置/Magick++-config pkg配置/Magick++-config 可以使用,从那里提供的标志直接使用。

        2
  •  1
  •   Taz jason    7 年前

    我终于安装好了 magick . 我从 source 并安装了R包,其中包含以下一组env变量:

    STATIC_LIB="/path/static-zlib-gcc6.3"
    IMAGEMAGICK_V6_HOME="/path/ImageMagick-6.9.10-10"
    
    export LIB_DIR="$STATIC_LIB/lib/ \
    -L$IMAGEMAGICK_V6_HOME/lib"
    
    export INCLUDE_DIR="$STATIC_LIB/include \
    -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 \
    -I$IMAGEMAGICK_V6_HOME/include/ImageMagick-6"
    
    export PKG_CONFIG_PATH="$IMAGEMAGICK_V6_HOME/lib/pkgconfig/:$PKG_CONFIG_PATH"
    export LD_LIBRARY_PATH="$IMAGEMAGICK_V6_HOME/lib:$LD_LIBRARY_PATH"