2012-08-16 13 views
6

Sto cercando di compilare Qt (Windows 7, mingw32-g ++ a 32 bit sotto msys) e ld sta esaurendo la memoria. Qualcuno sa perché? O forse una soluzione? Grazie!Perché g ++/ld sta esaurendo la memoria?

 
$ 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

Hai abbastanza memoria in primo luogo? 130 MB non sono molti ... – Mysticial

+0

@Mysticial il sistema ha 16 GB di memoria, il processo era a circa 2 GB di memoria quando si è bloccato. – chacham15

+5

Sembra che il compilatore sia in esecuzione in modalità a 32 bit. Questo lo manterrà a 2 GB su Windows. Hai provato 64-bit? – Mysticial

risposta

5

Grazie a tutti i commentatori che mi hanno aiutato a capire una soluzione a questo problema. Quello che ho fatto è stato sostituire ld con una grande versione di indirizzamento. L'ho scaricato dalla build MinGW this all'interno della cartella bin. Il post con la persona che collega tale distribuzione è here. Spero che questo aiuti altre persone che si imbattono in questo problema.

2

Se si installa la versione corrente di MinGW 4.6 o più recente, quindi compilare QT deve specificare il flag:

configure -Piattaforma win32-g ++ - 4.6

In "mkspecs" per Win32-g ++ 4.6 flag già definito -fno-keep-inline-dllexport che risolve il tuo problema.

0

Ho provato a scaricare ld.exe da qualche altra parte, ma non era adatto al mio toolkit (TDM-GCC). Alcuni plugin non sono stati in grado di caricare. Speriamo che la creazione di ld.exe LAA non sia stata difficile. Ho aperto ld.exe in un editor esadecimale e aggiornato all'offset 0x96 "0f 03" a "2f 03". Questo ha fatto il trucco per me.

Problemi correlati