2012-08-16 32 views
6

Tôi đang cố gắng biên dịch Qt (Windows 7, mingw32-g ++ 32-bit dưới msys) và ld đang hết bộ nhớ. Có ai biết tại sao không? Hoặc có lẽ một cách giải quyết? Cảm ơn!Tại sao g ++/ld hết bộ nhớ?

 
$ 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

Bạn có đủ bộ nhớ ngay từ đầu không? 130 MB thực sự không nhiều ... – Mysticial

+0

@ Hệ thống có bộ nhớ 16GB, quá trình này vào khoảng 2GB bộ nhớ khi nó bị lỗi. – chacham15

+5

Có vẻ như trình biên dịch đang chạy ở chế độ 32 bit. Điều đó sẽ giới hạn ở mức 2GB trên Windows. Bạn đã thử 64-bit chưa? – Mysticial

Trả lời

5

Nhờ tất cả những người nhận xét đã giúp tôi tìm ra giải pháp cho vấn đề này. Những gì tôi đã làm là thay thế ld bằng phiên bản nhận biết địa chỉ lớn. Tôi đã tải xuống từ this MinGW xây dựng bên trong thư mục bin. Bài đăng có người liên kết phân phối đó là here. Tôi hy vọng điều này sẽ giúp những người khác gặp phải vấn đề này.

2

Nếu bạn cài đặt phiên bản hiện tại của MinGW 4.6 hoặc mới hơn, sau đó biên dịch QT nên xác định cờ:

configure -platform win32-g ++ - 4,6

Trong "mkspecs" cho win32-g ++ 4.6 đã xác định cờ -fno-keep-inline-dllexport để giải quyết vấn đề của bạn.

0

Tôi đã cố gắng tải xuống ld.exe từ một nơi khác, nhưng nó không phù hợp với bộ công cụ của tôi (TDM-GCC). Một số plugin không thể tải. Hy vọng rằng, làm cho ld.exe LAA không phải là khó khăn. Tôi đã mở ld.exe trong một trình soạn thảo hex và vá tại offset 0x96 "0f 03" đến "2f 03". Điều đó đã đánh lừa tôi.

Các vấn đề liên quan