O mesmo erro aqui, mas com um aviso sobre bibliotecas conflitantes logo acima, que foi a dica útil.
/usr/local/gcc-6.4.0_binutils-2.28.1_isl/lib64/gcc/x86_64-pc-linux-gnu/6.4.0/../../../../x86_64-pc-linux-gnu/bin/ld: warning: libjpeg.so.8, needed by /usr/lib/../lib64/libtiff.so, may conflict with libjpeg.so.62
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::Image::ping(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::Image::attribute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)'
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::CoderInfo::description[abi:cxx11]() const'
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::Image::comment[abi:cxx11]() const'
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::Image::magick[abi:cxx11]() const'
libinterp/.libs/liboctinterp.so: undefined reference to 'Magick::CoderInfo::CoderInfo(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
Espera-se que Magick::Image::ping
esteja na biblioteca c ++, vamos verificar qual deles foi usado:
ldd libinterp/.libs/liboctinterp.so | grep -i magick++
libGraphicsMagick++.so.12 => /usr/local/gcc-6.4.0_binutils-2.28.1_isl/lib64/libGraphicsMagick++.so.12 (0x00007faa870ab000)
Mas Magick::Image::ping
está realmente lá:
nm -C /usr/local/gcc-6.4.0_binutils-2.28.1_isl/lib64/libGraphicsMagick++.so | grep ping
000000000004c7a0 T Magick::Image::ping(Magick::Blob const&)
000000000004c740 T Magick::Image::ping(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
Por isso, algo estava impedindo o vinculador de usá-lo corretamente.
Outra pista de que o libGraphicsMagick ++. é bom: com o mesmo procedimento de construção , mesmas bibliotecas, a ramificação estável da oitava é construída bem enquanto a ramificação dev falha.
Vamos levar a sério o aviso anterior. Na verdade, era já mencionado que
Note that with openSUSE 12.04 but also with 13.02, libjpeg-devel package lead to libjpeg62.so installation, that may conflict with libjpeg8.so that is also installed. That's why we recommend to not install libjpeg-devel, but rather install libjpeg8-devel.
libjpeg62-devel
tem que ser substituído por libjpeg8-devel
, porque vários pacotes dependem de uma biblioteca jpeg.
Os seguintes comandos foram emitidos no openSUSE 42.2.
sudo zypper install libjpeg8-devel
Problem: libjpeg62-devel-62.2.0-35.3.1.x86_64 conflicts with namespace:otherproviders(libjpeg-devel) provided by libjpeg8-devel-8.1.2-119.5.x86_64
Solution 1: deinstallation of libjpeg62-devel-62.2.0-35.3.1.x86_64
Solution 2: do not install libjpeg8-devel-8.1.2-119.5.x86_64
Choose from above solutions by number or cancel [1/2/c] (c): 1
The following NEW package is going to be installed:
libjpeg8-devel
The following package is going to be REMOVED:
libjpeg62-devel
1 new package to install, 1 to remove.
Overall download size: 110.8 KiB. Already cached: 0 B. After the operation, additional 63.6 KiB will be used.
Continue? [y/n/...? shows all options] (y):
mas a biblioteca jpeg ainda está lá. Vamos encontrar o pacote:
zypper se -f /usr/lib64/libjpeg.so.62.2.0
+ | libjpeg62 | The MMX/SSE accelerated JPEG compression/decompression library | package
Remova a biblioteca:
sudo zypper rm libjpeg62
The following package is going to be REMOVED:
libjpeg62
Em seguida, recrie GraphicsMagick-1.3.28, instale. A construção da oitava passa agora.