2013-07-02 81 views
1

我目前正在嘗試構建Windows版本的支持ImageMagick的emacs。MinGW32:與靜態標誌ImageMagick鏈接

爲此,我已經用MinGW32/MSys編譯ImageMagick以獲得兼容的庫文件。基本上鍊接也可以,但我必須明確地將-llibMagickCore-6.Q16-llibMagickWand-6.Q16添加到鏈接命令通過configure.bat--lib選項。

但是,emacs for windows的二進制分佈應該加載,即使在依賴關係不存在時也是如此。我添加鏈接器選項(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進行構建。

回答

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