2012-08-16 8 views
6

Ich versuche Qt zu kompilieren (Windows 7, mingw32-g ++ 32-Bit unter msys) und ld läuft nicht mehr genügend Arbeitsspeicher. Weiß jemand warum? Oder vielleicht ein Workaround? Vielen Dank!Warum ist g ++/ld der Arbeitsspeicher knapp?

 
$ 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

Haben Sie in erster Linie genug Speicher? 130 MB ist nicht wirklich viel ... – Mysticial

+0

@Mysticial das System hat 16 GB Speicher, der Prozess war bei etwa 2 GB Speicher, als es abgestürzt ist. – chacham15

+5

Klingt wie der Compiler im 32-Bit-Modus ausgeführt wird. Das wird es bei 2GB unter Windows begrenzen. Hast du 64-Bit probiert? – Mysticial

Antwort

5

Danke an alle Kommentatoren, die mir geholfen haben, eine Lösung für dieses Problem zu finden. Was ich getan habe, war ld mit einer großen Adresse bewusst Version zu ersetzen. Ich habe es heruntergeladen von this MinGW in den Ordner bin zu bauen. Der Post mit der Person, die diese Verteilung verknüpft, ist here. Ich hoffe, dies hilft anderen Menschen, die auf dieses Problem stoßen.

2

Wenn Sie die aktuelle Version von MinGW 4.6 oder neuer installieren, dann kompiliert QT das Kennzeichen angeben soll:

configure -Plattform win32-g ++ - 4.6

In "mkspecs" für win32-g ++ 4.6 bereits definierte Flag -fno-keep-inline-dllexport, die Ihr Problem löst.

0

Ich habe versucht, ld.exe von woanders herunterzuladen, aber es passte nicht in mein Toolkit (TDM-GCC). Einige Plugins konnten nicht geladen werden. Hoffentlich war es nicht so schwer, ld.exe LAA zu machen. Ich habe ld.exe in einem Hex-Editor geöffnet und bei Offset 0x96 "0f 03" auf "2f 03" gepatcht. Das hat den Trick für mich gemacht.

Verwandte Themen