2012-08-16 74 views
6

我試圖編譯QT(視窗7,的mingw32-G ++下MSYS 32位)和ld正在運行的存儲器。有誰知道爲什麼?或者也許是一種解決方法?謝謝!爲什麼g ++/ld內存不足?

 
$ g++ -mthreads -shared -Wl,--out-implib,i:/Programs/Qt/lib/libQtGuid4.a -o ../ 
../lib/QtGuid4.dll object_script.QtGuid.Debug -L'i:/Programs/Qt/lib' -L'i:/Pro 
grams/Qt/lib' -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 
-lole32 -luuid -luser32 -ladvapi32 tmp/obj/debug_shared/QtGuid_resource_res.o 
-lmsimg32 -lshell32 -lQtCored4 -lz 

i:/programs/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: o 
ut of memory allocating 133614056 bytes 
collect2.exe: error: ld returned 1 exit status 

+0

你有擺在首位足夠的內存? 130 MB並不是很多... – Mysticial 2012-08-16 01:27:37

+0

@Mysticial系統有16GB內存,當它崩潰時,進程大約有2GB的內存。 – chacham15 2012-08-16 01:28:43

+5

聲音就像編譯器以32位模式運行。這將在Windows上限制在2GB。你有沒有試過64位? – Mysticial 2012-08-16 01:29:22

回答

5

感謝所有幫助我找出解決方案的評論者。我所做的是將ld替換爲大型地址識別版本。我將它從this下載到了bin文件夾內的MinGW。鏈接該發佈人的帖子是here。我希望這可以幫助遇到這個問題的其他人。

2

如果安裝MinGW的4.6或更高版本的當前版本,然後編譯QT應指定標誌:

配置-platform的win32-G ++ - 4.6

在 「mkspecs」 爲Win32-G ++ 4.6已經定義了標誌-fno-keep-inline-dllexport,它可以解決你的問題。

0

我試圖從別的地方下載ld.exe,但它並沒有裝配到我的工具箱(TDM-GCC)。某些插件無法加載。希望製作ld.exe LAA並不困難。我在十六進制編輯器中打開了ld.exe,並在偏移量0x96「0f 03」修補爲「2f 03」。這對我來說是訣竅。