Tôi muốn xây dựng "trình biên dịch chéo gcc" để biên dịch các ứng dụng "c/C++" trên môi trường "Linux" nhưng cho mục tiêu "Windows".Xây dựng trình biên dịch chéo GCC (từ "Linux" sang "Windows")
Tôi đã thực hiện này cho đến nay:
cài đặt các công cụ cần thiết và các gói cho việc xây dựng GCC được liệt kê trên trang "Prerequisites for GCC".
Downloaded nguồn yêu cầu:
"gcc-core-4.4.1", "gcc-g++-4.4.1", "binutils-2.19.1", "w32api-3.13-mingw32", "mingwrt-3.16-mingw32"Created này hệ thống phân cấp thư mục:
"$ {HOME}/gcc/"- cho trình biên dịch chéo cuối cùng
" $ {HOME}/src/"- cho các nguồn
" $ {HOME}/src/build-binutils/i386-mingw32/"- để tạo binutils thành" i386-mingw32 " mục tiêu
"$ {HOME}/Src/build-gcc/i386-mingw32/"- để xây dựng gcc để "i386-mingw32" mục tiêubuilded binutils gói:
cd" $ {HOME}/src/build-binutils/i386 -mingw32/"
../../binutils-2.19.1/configure --prefix =" $ {HOME}/gcc "--target = i386-mingw32 --disable-nls
make
hãy cài đặtSao chép tiêu đề "w32api" và "mingwrt" vào thư mục cài đặt:
cp -R "$ {HOME}/src/w32api-3.13-mingw32/include" "$ {HOME}/gcc/i386-mingw32"
cp -R "$ {HOME} /src/mingwrt-3.16- mingw32/include" "$ {HOME}/gcc/i386-mingw32"
Và bây giờ khi tôi đang cố gắng xây dựng "c (chỉ) cross-trình biên dịch":
cd "${HOME}/src/build-gcc/i386-mingw32/"
../../gcc-4.4.1/configure --prefix="${HOME}/gcc" --target=i386-mingw32 --enable-languages=c --with-headers="${HOME}/gcc/i386-mingw32/include" --disable-nls
make<br>
nó đã được xây dựng một cái gì đó khoảng 4 phút và sau đó mang lại cho tôi những lỗi này:
${HOME}/gcc/i386-mingw32/bin/ld: dllcrt2.o: No such file: No such file or directory
collect2: ld returned 1 exit status
make[2]: *** [libgcc_s.dll] Error 1
make[2]: Leaving directory `${HOME}/src/build-gcc/i386-mingw32/i386-mingw32/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `${HOME}/src/build-gcc/i386-mingw32'
make: *** [all] Error 2
Từ thông báo lỗi đó tôi thực sự không biết phải làm gì bây giờ: - (((.
Có ai biết vấn đề ở đâu không?
Cảm ơn.
Cảm ơn bạn rất nhiều vì bình luận của bạn: "Bạn đã thực hiện thành công bước 3 ở trên". Tôi nghĩ rằng nếu tôi nhận được bất kỳ lỗi nào tôi không thể đi đến bước tiếp theo, nhưng (may mắn thay) tôi đã sai. Tiếp theo tôi đã biên dịch thành công win32api, nhưng tôi đã có một số lỗi khi tôi cố gắng biên dịch mingwrt - một cái gì đó đã sai với "luồng". Vì vậy, tôi đã quyết định biên dịch gcc với các tham số sau: --prefix = "$ {HOME}/gcc" --target = i386-mingw32 --program-prefix = i386-mingw32 --enable-languages = c, C++ --với -headers = "$ {HOME}/gcc/i386-mingw32/bao gồm" --disable-nls --disable-threads - có thể chia sẻ -disable-libssp. Và điều này đã làm việc !!! – Petike
Tôi xin lỗi vì một chút sai lầm từ nhận xét trước đó: sự cố ở tùy chọn "được chia sẻ" và KHÔNG có tùy chọn "chủ đề". Vì vậy, nó biên dịch cũng không có "--disable-thread" quy định. – Petike
Về chủ đề, bạn cũng có thể xây dựng GCC với '--enable-libgomp' (cho OpenMP) nếu bạn đã cài đặt thư viện pthreads-win32. –