2012-08-16 19 views
6

Próbuję skompilować Qt (Windows 7, mingw32-g ++ 32-bit pod msys) i ld kończy się na pamięci. Czy ktoś wie, dlaczego? A może obejście? Dzięki!Dlaczego w g ++/ld brakuje pamięci?

 
$ 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

Czy masz wystarczająco dużo pamięci? 130 MB nie jest naprawdę dużo ... – Mysticial

+0

@Mysticial system ma 16 GB pamięci, proces ten miał około 2 GB pamięci po awarii. – chacham15

+5

Wygląda na to, że kompilator działa w trybie 32-bitowym. To przykryje 2 GB w systemie Windows. Czy próbowałeś wersji 64-bitowej? – Mysticial

Odpowiedz

5

Dziękuję wszystkim komentatorom, którzy pomogli mi znaleźć rozwiązanie tego problemu. To, co zrobiłem, zastąpiłem ld dużą wersją adresową. Pobrałem go z this kompilacji MinGW wewnątrz folderu bin. Post z osobą łączącą tę dystrybucję to here. Mam nadzieję, że pomoże to innym osobom, które napotkają ten problem.

2

Jeśli zainstalować aktualną wersję MinGW 4.6 lub nowszej, a następnie skompilować QT powinno określać flag

configure -platform win32-g ++ - 4.6

W "mkspecs" dla win32-g ++ 4.6 już zdefiniowana flaga -fno-keep-inline-dllexport, która rozwiązuje twój problem.

0

Próbowałem pobrać plik ld.exe z innego miejsca, ale nie pasowało to do mojego zestawu narzędzi (TDM-GCC). Niektóre wtyczki nie mogły się załadować. Mam nadzieję, że zrobienie LAD.exe LAA nie było takie trudne. Otworzyłem program ld.exe w edytorze szesnastkowym i załatano przy przesunięciu 0x96 "0f 03" do "2f 03". To mi się udało.

Powiązane problemy