2009-05-18 29 views
6

Bài viết Porting Qt for Embedded Linux to Another Operating System liệt kê năm điều bạn phải làm để chuyển Qt cho Embedded Linux sang một hệ điều hành khác. Từ bài viết:Đang chuyển qt sang hệ điều hành khác đơn giản như thế này?

Có một số vấn đề cần lưu ý nếu bạn dự định thực hiện cổng của riêng mình với một hệ điều hành khác. Cụ thể, bạn phải giải quyết Qt cho bộ nhớ chia sẻ và các ẩn dụ của Embedded Linux (được sử dụng để chia sẻ các vùng cửa sổ), và bạn phải cung cấp một cái gì đó tương tự như các ổ cắm miền Unix cho giao tiếp giữa các ứng dụng. Bạn cũng phải cung cấp trình điều khiển màn hình và nếu bạn muốn triển khai âm thanh, bạn phải cung cấp máy chủ âm thanh của riêng mình. Cuối cùng, bạn phải sửa đổi bộ điều phối sự kiện được Qt sử dụng cho Embedded Linux.

Có thực sự dễ dàng để chuyển Qt sang hệ điều hành khác hoặc tôi đã bỏ sót một số thông tin?

+10

Không có điều nào trong số những điều đó nghe có vẻ đặc biệt dễ dàng đối với tôi. –

+0

Các bước được liệt kê không quá phức tạp vì bạn có một hệ điều hành hỗ trợ các cơ chế được mô tả trong bài viết. –

Trả lời

0

Sau khi điều tra chi tiết hơn, tôi đã đi đến kết luận rằng bài viết "Chuyển Qt cho Embedded Linux sang hệ điều hành khác" giả định rằng bạn đang chuyển Qt sang một hệ điều hành "giống Linux".

1

Giả sử bạn tìm thấy mọi thứ dễ dàng, sau đó cổng dễ dàng.

2

Kể từ khi Qt đã được chuyển một số lượng lớn các lần nó có vẻ hợp lý rằng nó sẽ là vốn đã đơn giản. Tuy nhiên vấn đề thực sự là trên nền tảng bạn đang chuyển đến và có bao nhiêu tính năng mà nó hiện đang hỗ trợ.

0

Tôi đã thử điều này và hiện đang tiến hành. Một số khó khăn:

IDE - Tôi phải thêm thủ công tất cả các tệp Qt và chống trình biên dịch bằng #ifdef cho đến khi nó được xây dựng với tất cả các phụ thuộc tại chỗ.

Linux (ness) - Tôi đã vô hiệu hóa tất cả những thứ Linux/Windows không được hỗ trợ trong hệ điều hành đích của tôi: luồng, ổ cắm, quy trình. Ngay cả các bộ hẹn giờ hơi khác nhau.

Mẹo: Bắt đầu nhỏ: Tôi đã biên dịch QtCore dưới dạng chuẩn lib trong IDE của tôi, tiếp theo là QtGui vốn là một khổng lồ so với QtCore.

Tôi định chạy chỉ một QThread duy nhất, vì vậy tôi phải giả tạo tạo đối tượng Thread để tránh con trỏ null. Bạn không thể biên dịch thông tin Thread vì nó là chìa khóa cho tất cả các QObject.

Cho đến nay tôi có qeventloop đang chạy trong qcoreapplication. Tôi đã viết một số lắp ráp nội tuyến nhưng đã có những khó khăn nghiêm trọng với IDE và biên dịch của tôi. Tôi để nó trong C++ và để cho trình biên dịch xử lý nó cho tôi. Bởi vì tôi là đơn luồng, tôi không quá quan tâm đến dữ liệu được chia sẻ/truy cập độc quyền theo yêu cầu của các hoạt động nguyên tử.

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