-->

MINGW32:链接对ImageMagick的用-static标志(MinGW32: Linking

2019-10-18 08:02发布

目前我正在试图建立的Emacs的Windows的版本,支持ImageMagick的。

为此目的,我已经为了得到兼容的库文件已编译的ImageMagick与MINGW32 / MSys的。 基本上,连接也适用,但我要明确地添加-llibMagickCore-6.Q16-llibMagickWand-6.Q16通过对连接命令configure.bat--lib选项。

然而,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文件(Visual Studio中)不应该是一个问题。

我已经使用的ImageMagick的Unix的源代码分发,因为Windows源要求的Visual Studio建筑。

Answer 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工作。



文章来源: MinGW32: Linking against ImageMagick with -static flag