2009-10-02 40 views
6

Tôi đang phát triển một ứng dụng dựa trên qt và tôi muốn phát triển cả phiên bản 32 và 64bit của ứng dụng trên cùng một máy, chia sẻ cùng một nguồn, tập lệnh, v.v. Máy là Ubuntu 64 bit, Intel Core i7, ram 8gb. Tôi biết rằng bằng cách chạy VMWare hoặc VirtualBox có thể nhận được những điều làm việc, tuy nhiên nó không có vẻ là một giải pháp tốt vì tôi muốn sử dụng bộ vi xử lý (i7) lúc đầy đủ của nó. Tôi đọc về một môi trường chroot và có vẻ như với tôi nó có thể là thiết lập tôi đang tìm kiếm: tôi cần máy phát triển cũng có thể chạy các tập tin thực thi vừa được xây dựng.Cài đặt Ubuntu tốt nhất cho phát triển ứng dụng Qt 32 bit và * 64 bit?

Bạn có kinh nghiệm về điều đó không? Bạn đã thiết lập một 32bit chroot env trên một máy chủ 64bit? Nó có hoạt động tốt không? Làm thế nào để thiết lập chính xác nó?

Trả lời

5

Tôi đã ở trong một tình huống tương tự nhưng không chính xác. Tôi đã phát triển các ứng dụng Qt4 cho Windows 32 bit trong khi chạy trên Jaunty 64 bit. Một môi trường chroot'd sẽ cung cấp cho bạn những gì bạn muốn, với sự khó chịu nhỏ của việc phải chroot qua nó để biên dịch ứng dụng 32 bit của bạn.

Những gì tôi đã làm để biên dịch cho Windows là thiết lập trình biên dịch chéo đặc biệt cho mục đích đó. Bạn có lẽ sẽ không phải làm điều đó. Bạn có thể có thể lấy đi với g ++ -m32 biên dịch đến 32 bit. Để tránh phải chỉnh sửa makefiles và như vậy một tỷ lần, bạn có thể tạo/sửa đổi/sử dụng các specfiles đi kèm với Qt, sao cho bạn có thể làm "qmake -project & & qmake -makefile spec blablabla" (Nếu tôi nhớ cú pháp của lệnh đúng cách).

+0

Tôi phát hiện ra rằng "/mkspecs /" chứa cả linux-g ++ - 32 và linux-g ++ - 64 và chúng bổ sung cụ thể -m32 và -m64. Tuy nhiên tôi không pratical chrooting vì vậy tôi đang tìm kiếm một hướng dẫn hoặc một cái gì đó về cách làm điều đó và để xóa một số điểm tối nghĩa tôi có trên nó, tức là, tôi cần phải bắt đầu một Xserver cho chạy chroot 32bit app ? – Manuel

+0

Nếu bạn sử dụng mkspecs, bạn không cần sử dụng chroot.Bạn sẽ phải cài đặt cả hai lib 32 bit và 64 bit trên máy của mình, nhưng sau đó, bạn có thể chạy "qmake -project && qmake -makefile linux-g ++ - && make." Sau đó nó sẽ xây dựng trên bất cứ điều gì bitness bạn muốn. – ZachS

+0

Chắc chắn bạn là đúng ZachS, tôi chỉ bối rối một chút: tôi sẽ thử mkspecs đầu tiên. – Manuel

3

Tôi cũng ở trong tình huống tương tự và đây là cách tôi làm việc:

Tôi sử dụng phiên bản Qt được tạo tùy chỉnh. Tôi tạo Qt hai lần, với cùng các tùy chọn định cấu hình, ngoại trừ thông số -nền tảng, mà tôi đặt thành linux-g ++ - 64 cho bản dựng đầu tiên và linux-g ++ - 32 cho bản dựng thứ hai. Tôi cũng sử dụng một số khác nhau -prefix để cài đặt cả hai phiên bản trong các thư mục riêng biệt.

Tôi sử dụng QtCreator để tạo ứng dụng của mình. Tôi đã thêm cả hai phiên bản Qt trong hộp thoại Tùy chọn -> Qt4 -> Qt. Sau đó tôi thiết lập hai cấu hình xây dựng khác nhau cho các dự án của mình, với cùng các tùy chọn xây dựng, nhưng với một tùy chọn sử dụng thư mục Qt 32 bit và một sử dụng thư mục Qt 64 bit. QtCreator sau đó sẽ chăm sóc tất cả các phép thuật, và tôi chỉ cần thay đổi giữa các cấu hình xây dựng để có cả ứng dụng Qt 32 bit và 64 bit. Không chroot, không có VM, không có gì, chỉ là một bản xây dựng đơn giản.

Mặc dù vậy, có một báo trước. Việc xây dựng Qt cho 32 bit rõ ràng đòi hỏi các phiên bản 32 bit của hầu hết các thư viện phát triển (X libs, stdlibs, v.v.), có thể dễ dàng có được trên Ubuntu Jaunty với ia32-libs và lib32stdC++ 6. Các libs duy nhất tôi đã không quản lý để tìm kiếm 32-bit phát triển trên kiến ​​trúc 64-bit là libs gstreamer, có nghĩa là Phonon có thể không hoạt động. Tôi cần Phonon, vì vậy tôi đã làm việc aroud rằng bằng cách xây dựng Qt trong một máy ảo, sau đó sao chép thư mục cài đặt của Qt trở lại trên máy dev của tôi.

Chúc may mắn.

+0

cảm ơn, đang tìm kiếm điều này. Tôi sẽ thử phương pháp VM được đề xuất của bạn – KGCybeX

+0

Tôi cần truy vấn giải pháp của bạn. Tôi đang xây dựng Qt5.5.1 trong máy ảo Ubuntu 16.04 (i386/32bit). Bên cạnh cờ thông thường './configure -prefix/path/to/Qt5-5-1/install /' và chấp nhận cờ giấy phép, bạn có chỉ định bất kỳ nền tảng cụ thể hoặc cờ liên quan nào không? Tôi đang sử dụng './configure -opensource -nomake example -nomake tests -confirm-license -prefix/opt/qt-5.5.1' Điều này có vẻ quen thuộc, tôi có thiếu cờ không? – KGCybeX

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