2012-08-27 40 views
1

我正在使用Mingw-w64(主機是Ubuntu 12.04 64位)爲Windows交叉編譯Fontconfig。該過程由以下步驟組成:爲什麼libtool尋找.lib文件而不是.a文件?

  1. 編譯並安裝構建依賴項(Freetype和eXpat)。

  2. 運行./configure

    ./configure --host=i686-win64-mingw32 --prefix=/usr/i686-w64-mingw32 
    
  3. ./configure過程完成,沒有錯誤,我跑make

    make 
    
  4. 不幸的是東西放在這裏錯了:

    ... 
        CCLD libfontconfig.la 
    i686-w64-mingw32-gcc: error: /usr/i686-w64-mingw32/lib/libexpat.lib: 
        No such file or directory 
    

正如你所看到的,libtool正在尋找libexpat.lib一些奇怪的原因(這不存在),而不是libexpat.a(其中確實存在)。

這是怎麼回事嗎?


編輯:使事情變得更加混亂,這些相同的步驟在Ubuntu 12.10(量子理論)完美地工作。我不知道爲什麼它在12.04(精確)失敗。上述命令的輸出的一個diff不會產生差異,直到包含上述錯誤的行爲止。


進一步編輯:我已經提取的原始命令正在運行生成錯誤:

/bin/bash ../libtool --silent --tag=CC --mode=link i686-w64-mingw32-gcc -O2 -ve 
rsion-info 7:2:6 -no-undefined -export-symbols fontconfig.def -o libfontconfig.l 
a -rpath /usr/i686-w64-mingw32/lib fcatomic.lo fcblanks.lo fccache.lo fccfg.lo 
fccharset.lo fcdbg.lo fcdefault.lo fcdir.lo fcformat.lo fcfreetype.lo fcfs.lo fc 
init.lo fclang.lo fclist.lo fcmatch.lo fcmatrix.lo fcname.lo fcpat.lo fcserializ 
e.lo fcstat.lo fcstr.lo fcxml.lo ftglue.lo -L/usr/i686-w64-mingw32/lib -lfreetyp 
e -L/usr/i686-w64-mingw32/lib -lexpat 

i686-w64-mingw32-gcc呼叫變爲:

-------------------------------------------------------------------------------- 
i686-w64-mingw32-gcc -shared .libs/libfontconfig-1.dll.def .libs/fcatomic.o .lib 
s/fcblanks.o .libs/fccache.o .libs/fccfg.o .libs/fccharset.o .libs/fcdbg.o .libs 
/fcdefault.o .libs/fcdir.o .libs/fcformat.o .libs/fcfreetype.o .libs/fcfs.o .lib 
s/fcinit.o .libs/fclang.o .libs/fclist.o .libs/fcmatch.o .libs/fcmatrix.o .libs/ 
fcname.o .libs/fcpat.o .libs/fcserialize.o .libs/fcstat.o .libs/fcstr.o .libs/fc 
xml.o .libs/ftglue.o -L/usr/i686-w64-mingw32/lib /usr/i686-w64-mingw32/lib/libfr 
eetype.dll.a /usr/i686-w64-mingw32/lib/libexpat.lib -O2 -o .libs/libfontconfig-1 
.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libfontco 
nfig.dll.a 

回答

1

因此,原來問題不在於Fontconfig,而在於eXpat。用於構建eXpat的環境沒有安裝Mingw-w64的C++編譯器,並且由於某種原因導致生成了一個名爲libexpat.a而不是libexpat.dll.a的文件。

一旦我重新安裝了g++-mingw-w64 Install g++-mingw-w64 http://hostmar.co/software-small軟件包,它成功了。

順便說一句,Quanta構建成功,而Precise構建失敗的原因是由於g++-mingw-w64 Install g++-mingw-w64 http://hostmar.co/software-small不是精確的mingw-w64 Install mingw-w64 http://hostmar.co/software-small的依賴關係,但已成爲Quantal的依賴關係。

相關問題