1

我目前正在尝试构建支持 ImageMagick 的 Windows 版本的 emacs。

为此,我已经用 MinGW32/MSys 编译了 ImageMagick 以获得兼容的库文件。基本上链接也有效,尽管我必须通过's选项显式添加-llibMagickCore-6.Q16-llibMagickWand-6.Q16链接命令。configure.bat--lib

但是,即使不存在依赖项,也应该加载适用于 windows 的 emacs 的二进制分发。我在添加链接器选项 ( configure.bat --ldflags)时获得了这种行为-static

但是,当我尝试使用 ImageMagick-Support 进行编译时,静态链接失败,说它找不到 ImageMagick 包含的内容。

库文件位于D:/BUILD/libraries/lib. 作为一个最小的例子:

D:\>ld -LD:/BUILD/libraries/lib -llibMagickWand-6.Q16

D:\>ld -static -LD:/BUILD/libraries/lib -llibMagickWand-6.Q16
ld: cannot find -llibMagickWand-6.Q16

但是,该目录确实包含静态库。

D:\BUILD\libraries\lib>dir *Magick*
[...]
2013-07-02  15:16         2,585,830 libMagick++-6.Q16.a
2013-07-02  15:16         1,745,404 libMagick++-6.Q16.dll.a
2013-07-02  15:16             1,178 libMagick++-6.Q16.la
2013-07-02  15:16         5,153,712 libMagickCore-6.Q16.a
2013-07-02  15:16           977,292 libMagickCore-6.Q16.dll.a
2013-07-02  15:16             1,096 libMagickCore-6.Q16.la
2013-07-02  15:16         1,609,692 libMagickWand-6.Q16.a
2013-07-02  15:16           472,364 libMagickWand-6.Q16.dll.a
2013-07-02  15:16             1,142 libMagickWand-6.Q16.la

任何想法,这里可能出了什么问题?据我了解,这些.a文件是 MinGW 的静态库,因此缺少.lib文件(Visual Studio)应该不是问题。

我使用了 ImageMagick 的 Unix 源代码分发,因为 Windows 源代码需要 Visual Studio 来构建。

4

1 回答 1

1

我发现错误正在查看ld -verbose=0 ...

出于某种原因,当使用-static标志时,lookupbehaviour 会发生变化。没有-static标志:

...
attempt to open D:/BUILD/libraries/lib/liblibMagickWand-6.Q16.dll.a failed
attempt to open D:/BUILD/libraries/lib/libMagickWand-6.Q16.dll.a succeeded

-static标志:

...
attempt to open D:/BUILD/libraries/lib\liblibMagickWand-6.Q16.a failed
attempt to open c:\mingw\bin\../../MinGW/usr/local/lib\liblibMagickWand-6.Q16.a failed
attempt to open c:\mingw\bin\../../MinGW/lib\liblibMagickWand-6.Q16.a failed
attempt to open c:\mingw\bin\../../MinGW/usr/lib\liblibMagickWand-6.Q16.a failed
attempt to open D:/BUILD/libraries/lib\libMagickWand-6.Q16.lib failed
attempt to open c:\mingw\bin\../../MinGW/usr/local/lib\libMagickWand-6.Q16.lib failed
attempt to open c:\mingw\bin\../../MinGW/lib\libMagickWand-6.Q16.lib failed
attempt to open c:\mingw\bin\../../MinGW/usr/lib\libMagickWand-6.Q16.lib failed
ld: cannot find -llibMagickWand-6.Q16

写作-lMagickWand-6.Q16而不是-llibMagickWand-6.Q16工作。

于 2013-07-02T19:29:33.653 回答