Неопределенная ссылка на Магику при попытке собрать Octave с помощью GCC - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь собрать Octave 4.2.2 на Ubuntu 16.04 с G CC 4.9.3, но я получаю эту ошибку:

libinterp/.libs/liboctinterp.so: undefined reference to `Magick::CoderInfo::CoderInfo(std::string const&)'
libinterp/.libs/liboctinterp.so: undefined reference to `Magick::Image::comment() const'
libinterp/.libs/liboctinterp.so: undefined reference to `Magick::CoderInfo::description() const'
libinterp/.libs/liboctinterp.so: undefined reference to `Magick::Image::magick() const'
libinterp/.libs/liboctinterp.so: undefined reference to `Magick::Image::attribute(std::string)'
libinterp/.libs/liboctinterp.so: undefined reference to `Magick::Image::ping(std::string const&)'

Я уже проверил свои библиотеки и вот что у меня есть :

graphicsmagick/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed]
graphicsmagick-libmagick-dev-compat/xenial-updates,xenial-updates,xenial-security,xenial-security,now 1.3.23-1ubuntu0.6 all [installed]
imagemagick/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed]
imagemagick-6.q16/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed]
imagemagick-common/xenial-updates,xenial-updates,xenial-security,xenial-security,now 8:6.8.9.9-7ubuntu5.15 all [installed]
libgraphics-magick-perl/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed,automatic]
libgraphicsmagick++-q16-12/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed]
libgraphicsmagick++1-dev/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed]
libgraphicsmagick-q16-3/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed]
libgraphicsmagick1-dev/xenial-updates,xenial-security,now 1.3.23-1ubuntu0.6 amd64 [installed]
libmagick++-6-headers/xenial-updates,xenial-updates,xenial-security,xenial-security,now 8:6.8.9.9-7ubuntu5.15 all [installed,auto-removable]
libmagick++-6.q16-5v5/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed,automatic]
libmagick++-6.q16-dev/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed,auto-removable]
libmagickcore-6-arch-config/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed,automatic]
libmagickcore-6-headers/xenial-updates,xenial-updates,xenial-security,xenial-security,now 8:6.8.9.9-7ubuntu5.15 all [installed,automatic]
libmagickcore-6.q16-2/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed]
libmagickcore-6.q16-2-extra/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed]
libmagickcore-6.q16-dev/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed,automatic]
libmagickwand-6-headers/xenial-updates,xenial-updates,xenial-security,xenial-security,now 8:6.8.9.9-7ubuntu5.15 all [installed,automatic]
libmagickwand-6.q16-2/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed]
libmagickwand-6.q16-dev/xenial-updates,xenial-security,now 8:6.8.9.9-7ubuntu5.15 amd64 [installed,automatic]
libmagickwand-dev/xenial-updates,xenial-updates,xenial-security,xenial-security,now 8:6.8.9.9-7ubuntu5.15 all [installed]

Более того, я проверил liboctinterp.so:

ldd libinterp/.libs/liboctinterp.so | grep -i magick++
    libGraphicsMagick++-Q16.so.12 => /usr/lib/libGraphicsMagick++-Q16.so.12 (0x00007f6c7fa2b000)

nm -C /usr/lib/libGraphicsMagick++-Q16.so.12 | grep -i coderinfo
    nm: /usr/lib/libGraphicsMagick++-Q16.so.12: no symbols

nm -D /usr/lib/libGraphicsMagick++-Q16.so.12 | grep -i coderinfo
000000000003e600 T _ZN6Magick9CoderInfoaSERKS0_
000000000003e650 T _ZN6Magick9CoderInfoC1EPKN9MagickLib11_MagickInfoE
000000000003e350 T _ZN6Magick9CoderInfoC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
000000000003e2c0 T _ZN6Magick9CoderInfoC1ERKS0_
000000000003e280 T _ZN6Magick9CoderInfoC1Ev
000000000003e650 T _ZN6Magick9CoderInfoC2EPKN9MagickLib11_MagickInfoE
000000000003e350 T _ZN6Magick9CoderInfoC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
000000000003e2c0 T _ZN6Magick9CoderInfoC2ERKS0_
000000000003e280 T _ZN6Magick9CoderInfoC2Ev
000000000003e530 T _ZN6Magick9CoderInfoD1Ev
000000000003e530 T _ZN6Magick9CoderInfoD2Ev
000000000003e5d0 T _ZNK6Magick9CoderInfo10isReadableEv
000000000003e5e0 T _ZNK6Magick9CoderInfo10isWritableEv
000000000003e5a0 T _ZNK6Magick9CoderInfo11descriptionB5cxx11Ev
000000000003e5f0 T _ZNK6Magick9CoderInfo12isMultiFrameEv
000000000003e570 T _ZNK6Magick9CoderInfo4nameB5cxx11Ev

Понятия не имею, почему я получил эту ошибку.

Спасибо за ваши ответы :)

РЕДАКТИРОВАТЬ: Я уже проверил тысячи постов, включая эту Ошибка при компиляции Octave с G CC, который близок к моему, но безрезультатно.

EDIT2: Что я получу, если я проверю зависимости общего объекта с помощью grep для Magick вместо Magick++:

ldd libinterp/.libs/liboctinterp.so | grep -i magick
    libGraphicsMagick++-Q16.so.12 => /usr/lib/libGraphicsMagick++-Q16.so.12 (0x00007f09ff71a000)
    libGraphicsMagick-Q16.so.3 => /usr/lib/libGraphicsMagick-Q16.so.3 (0x00007f09ff1bf000)

И команда nm приводит к nm: /usr/lib/libGraphicsMagick-Q16.so.3: no symbols.

1 Ответ

0 голосов
/ 05 марта 2020

После многих попыток единственным решением было перестроить GraphicsMagick. Надеюсь этот пост поможет другим людям! :)

...