Le Wed, 7 Dec 2011 22:07:11 -0800 (PST), Darrell Anderson humanreadable@yahoo.com a écrit :
Some progress. :) I merges some *magick related patches from Fedora.
I finally found a way to build GraphicsMagick 1.1.15 in Slackware 13.1. I had to create a gcc43 patch and a patch to explicitly include libpng12/png.h rather than libpng14/png.h. Slackware 13.1 includes both but defaults to libpng14.
With or without GraphicsMagick 1.1.15, the build fails as before with all of the /usr/lib/libMagickCore.so: undefined reference errors.
Adding -l/usr/lib/libMagickWand.so to the LDFLAGS does not help.
When I remove ImageMagick and have GraphicsMagick 1.1.15 installed then KOffice builds. Yet only chalk and krossrunner build.
An hour and 20 minutes for the build and the build is incorrect. :(
When I run the readelf command against ImageMagick /usr/lib/libMagick* libraries, looking for any that contain references to DrawSetStrokeLineCap, I see the following:
readelf --symbols --wide /usr/lib/libMagick* | grep DrawSetStrokeLineCap
readelf: Error: Not an ELF file - it has the wrong magic bytes at the start readelf: Error: /usr/lib/libMagick++.la: Failed to read file header 1978: 00000000 0 FUNC GLOBAL DEFAULT UND DrawSetStrokeLineCap 1978: 00000000 0 FUNC GLOBAL DEFAULT UND DrawSetStrokeLineCap 1978: 00000000 0 FUNC GLOBAL DEFAULT UND DrawSetStrokeLineCap readelf: Error: Not an ELF file - it has the wrong magic bytes at the start readelf: Error: /usr/lib/libMagickCore.la: Failed to read file header 1598: 00000000 0 NOTYPE GLOBAL DEFAULT UND DrawSetStrokeLineCap 1598: 00000000 0 NOTYPE GLOBAL DEFAULT UND DrawSetStrokeLineCap 1598: 00000000 0 NOTYPE GLOBAL DEFAULT UND DrawSetStrokeLineCap readelf: Error: Not an ELF file - it has the wrong magic bytes at the start readelf: Error: /usr/lib/libMagickWand.la: Failed to read file header 871: 00076880 335 FUNC GLOBAL DEFAULT 10 DrawSetStrokeLineCap 871: 00076880 335 FUNC GLOBAL DEFAULT 10 DrawSetStrokeLineCap 871: 00076880 335 FUNC GLOBAL DEFAULT 10 DrawSetStrokeLineCap
I selected the DrawSetStrokeLineCap symbol arbitrarily from the build log failures.
When I run the ld command against those three ImageMagick libraries, I see the following:
ld /usr/lib/libMagick++.so ld: warning: cannot find entry symbol _start; not setting start address
ld /usr/lib/libMagickWand.so ld: warning: cannot find entry symbol _start; not setting start address
ld /usr/lib/libMagickCore.so ld: warning: cannot find entry symbol _start; not setting start address /usr/lib/libMagickCore.so: undefined reference to `DrawPathStart' /usr/lib/libMagickCore.so: undefined reference to `DrawSetViewbox' /usr/lib/libMagickCore.so: undefined reference to `DrawSetFont' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeColor' /usr/lib/libMagickCore.so: undefined reference to `DrawColor' /usr/lib/libMagickCore.so: undefined reference to `DrawPopPattern' /usr/lib/libMagickCore.so: undefined reference to `DrawSetFillPatternURL' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeDashArray' /usr/lib/libMagickCore.so: undefined reference to `DrawAllocateWand' /usr/lib/libMagickCore.so: undefined reference to `PushDrawingWand' /usr/lib/libMagickCore.so: undefined reference to `DrawPathClose' /usr/lib/libMagickCore.so: undefined reference to `PixelSetRedQuantum' /usr/lib/libMagickCore.so: undefined reference to `DrawScale' /usr/lib/libMagickCore.so: undefined reference to `DrawSetTextUnderColor' /usr/lib/libMagickCore.so: undefined reference to `DrawLine' /usr/lib/libMagickCore.so: undefined reference to `PopDrawingWand' /usr/lib/libMagickCore.so: undefined reference to `DestroyPixelWand' /usr/lib/libMagickCore.so: undefined reference to `DrawSetFontSize' /usr/lib/libMagickCore.so: undefined reference to `DrawTranslate' /usr/lib/libMagickCore.so: undefined reference to `DrawPathMoveToAbsolute' /usr/lib/libMagickCore.so: undefined reference to `DrawAnnotation' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeAntialias' /usr/lib/libMagickCore.so: undefined reference to `DrawPushDefs' /usr/lib/libMagickCore.so: undefined reference to `DrawPathFinish' /usr/lib/libMagickCore.so: undefined reference to `DestroyMagickWand' /usr/lib/libMagickCore.so: undefined reference to `DrawRoundRectangle' /usr/lib/libMagickCore.so: undefined reference to `DrawPopDefs' /usr/lib/libMagickCore.so: undefined reference to `PixelSetQuantumColor' /usr/lib/libMagickCore.so: undefined reference to `DrawSetFillColor' /usr/lib/libMagickCore.so: undefined reference to `DrawComposite' /usr/lib/libMagickCore.so: undefined reference to `DrawSetClipPath' /usr/lib/libMagickCore.so: undefined reference to `DrawRender' /usr/lib/libMagickCore.so: undefined reference to `DrawEllipse' /usr/lib/libMagickCore.so: undefined reference to `DrawComment' /usr/lib/libMagickCore.so: undefined reference to `DrawPathLineToAbsolute' /usr/lib/libMagickCore.so: undefined reference to `PixelSetBlueQuantum' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeLineJoin' /usr/lib/libMagickCore.so: undefined reference to `DrawPushPattern' /usr/lib/libMagickCore.so: undefined reference to `PixelSetColor' /usr/lib/libMagickCore.so: undefined reference to `DrawPushClipPath' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeLineCap' /usr/lib/libMagickCore.so: undefined reference to `DrawArc' /usr/lib/libMagickCore.so: undefined reference to `NewMagickWandFromImage' /usr/lib/libMagickCore.so: undefined reference to `PixelSetOpacityQuantum' /usr/lib/libMagickCore.so: undefined reference to `DrawPopClipPath' /usr/lib/libMagickCore.so: undefined reference to `DrawSetClipRule' /usr/lib/libMagickCore.so: undefined reference to `NewPixelWand' /usr/lib/libMagickCore.so: undefined reference to `DrawRotate' /usr/lib/libMagickCore.so: undefined reference to `DrawRectangle' /usr/lib/libMagickCore.so: undefined reference to `DestroyDrawingWand' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokeWidth' /usr/lib/libMagickCore.so: undefined reference to `DrawPathEllipticArcAbsolute' /usr/lib/libMagickCore.so: undefined reference to `DrawSetStrokePatternURL' /usr/lib/libMagickCore.so: undefined reference to `PixelSetGreenQuantum'
I'm thinking the problem is not how koffice links to ImageMagick, but ImageMagick itself.
I grabbed the sources for ImageMagick-6.5.3-3, which is the version that came with Slackware 13.0. (I had to add a patch to force using libpng12 rather than libpng14.) I rebuilt the package and ran the ld command against all three libraries. No 'undefined reference' errors.
Something changed between 6.5.3-3 and 6.5.9-6. Something in 6.5.9-6 does not build correctly.
The library seems to have a missing NEEDED for the library which provides the functions (which appears to be libMagickWand.so). You can read the dynamic library part of an ELF library by the command $ readelf -d <library>.so
Any ideas what? Something in the config options? Compiler flags? My searching the web revealed nothing.
I have no 'undefined reference' error with Slackware64 13.37 and its provided ImageMagick 6.6.6_10. But strangely libMagickCore.so doesn't specify libMagickWand.so in it's NEEDED list (not even in the ldd result); seems that the 6.6.6_10 libMagickCore.so doesn't use libMagickWand.so at all.
Darrell
To unsubscribe, e-mail: trinity-devel-unsubscribe@lists.pearsoncomputing.net For additional commands, e-mail: trinity-devel-help@lists.pearsoncomputing.net Read list messsages on the Web archive: http://trinity-devel.pearsoncomputing.net/ Please remember not to top-post: http://trinity.pearsoncomputing.net/mailing_lists/#top-posting