Tôi muốn biên dịch chéo các thư viện Qt (và cuối cùng là ứng dụng của tôi) cho mục tiêu Windows x86_64 bằng máy chủ Linux x86_64. Tôi cảm thấy như tôi đã gần gũi, nhưng tôi có thể có sự hiểu lầm cơ bản về một số phần của quá trình này.
Tôi đã bắt đầu bằng cách cài đặt tất cả các gói mingw trên máy Fedora của mình và sau đó sửa đổi win32-g++
tệp qmake.conf để phù hợp với môi trường của tôi. Tuy nhiên, tôi dường như đang gặp khó khăn với một số tùy chọn cấu hình dường như rõ ràng cho Qt: -platform
và -xplatform
. Tài liệu Qt nói rằng đó -platform
phải là kiến trúc máy chủ (nơi bạn đang biên dịch) và -xplatform
phải là nền tảng đích mà bạn muốn triển khai. Trong trường hợp của tôi, tôi đặt -platform linux-g++-64
và đặt -xplatform linux-win32-g++
linux-win32-g ++ là cấu hình win32-g ++ đã sửa đổi của tôi.
Vấn đề của tôi là, sau khi thực hiện cấu hình với các tùy chọn này, tôi thấy rằng nó gọi trình biên dịch của hệ thống của tôi thay vì trình biên dịch chéo (x86_64-w64-mingw32-gcc). Nếu tôi bỏ qua -xplatform
tùy chọn và đặt thành -platform
thông số mục tiêu của mình (linux-win32-g ++), nó sẽ gọi trình biên dịch chéo nhưng sau đó sẽ xảy ra lỗi khi tìm thấy một số hàm liên quan đến Unix không được xác định.
Đây là một số kết quả từ lần thử mới nhất của tôi: http://pastebin.com/QCpKSNev .
Câu hỏi:
Khi biên dịch chéo một cái gì đó như Qt cho Windows từ máy chủ Linux, có bao giờ nên gọi trình biên dịch gốc không? Đó là, trong quá trình biên dịch chéo, chúng ta không nên chỉ sử dụng trình biên dịch chéo? Tôi không hiểu tại sao tập lệnh cấu hình của Qt cố gắng gọi trình biên dịch gốc của hệ thống của tôi khi tôi chỉ định
-xplatform
tùy chọn.Nếu tôi đang sử dụng trình biên dịch chéo mingw, khi nào tôi sẽ phải xử lý tệp thông số kỹ thuật? Các tệp thông số kỹ thuật cho GCC vẫn còn là một bí ẩn đối với tôi, vì vậy tôi đang tự hỏi liệu một số thông tin cơ bản ở đây có giúp được tôi không.
Nói chung, ngoài việc chỉ định một trình biên dịch chéo trong qmake.conf của tôi, tôi có thể cần xem xét điều gì khác?