Linker MinGW32:使用-static标志链接ImageMagick

Linker MinGW32:使用-static标志链接ImageMagick,linker,imagemagick,mingw,static-libraries,building,Linker,Imagemagick,Mingw,Static Libraries,Building,我目前正在尝试构建一个支持ImageMagick的Windows版本的emacs 为此,我已经使用MinGW32/MSys编译了ImageMagick,以获得兼容的库文件。虽然我必须通过configure.bat的--lib选项将-llibMagickCore-6.Q16和-llibMagickWand-6.Q16显式添加到链接命令中,但基本上链接也可以工作 然而,emacs for windows的二进制分布应该是加载的,即使在缺少依赖项的情况下也是如此。当我添加链接器选项(configure

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

为此,我已经使用MinGW32/MSys编译了ImageMagick,以获得兼容的库文件。虽然我必须通过
configure.bat
--lib
选项将
-llibMagickCore-6.Q16
-llibMagickWand-6.Q16
显式添加到链接命令中,但基本上链接也可以工作

然而,emacs for windows的二进制分布应该是加载的,即使在缺少依赖项的情况下也是如此。当我添加链接器选项(
configure.bat--ldflags
-static
时,我会获得这种行为

但是,当我尝试使用ImageMagick支持进行编译时,静态链接失败,因为它无法找到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
文件(visualstudio)应该不是问题


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

我在查看
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
带有
-静态
标志:

...
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
有效。

我在查看
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
带有
-静态
标志:

...
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
有效