Có cách nào để biên dịch các chương trình Qt5, được viết bằng c ++, sang Ubuntu Touch không?


9

Tôi đang tạo một chương trình với Qt5 và C ++ và tôi muốn biên dịch chương trình của mình cho Ubuntu Touch Preview hoặc nhánh máy tính để bàn Ubuntu.

Tôi đang chạy các hệ thống đó trên Nexus 7. Tôi đã tìm thấy trình biên dịch C ++ ( arm-linux-gnueabihf-g++) phù hợp, nhưng làm cách nào để Qt5 hoạt động?


Nếu câu trả lời của @David Planella đã giải quyết vấn đề của bạn, bạn nên đánh dấu nó là "được chấp nhận".
bốn giờ

Câu trả lời:


11

Cách dễ dàng

Bạn có thể sử dụng một tính năng thử nghiệm của Ubuntu SDK Alpha. Cái hay của nó là bạn không cần phải biên dịch chéo.

Đầu tiên kết nối với thiết bị của bạn:

  1. Cắm thiết bị của bạn vào cổng USB của máy tính
  2. Bắt đầu tạo Qt
  3. Bấm vào tab thiết bị
  4. Nhấp vào nút Bật để bật chế độ nhà phát triển
  5. Chuyển đến Công cụ> Ubuntu> Thiết bị> Bật> Biên dịch Cpp trên thiết bị Ubuntu (thử nghiệm)

Sau đó bắt đầu hack:

  1. Mở dự án ứng dụng của bạn trong Qt Creator
  2. Chuyển đến dự án Build> Ubuntu> Build C ++ trên thiết bị Ubuntu (thử nghiệm)

Xây dựng các dự án C ++ Touch trên thiết bị

Và tắt bạn đi! :-)

Nếu bạn thích một thử thách

Bạn có thể biên dịch các ứng dụng trên thiết bị bằng tay. Bạn có thể muốn thử các bước sau (chưa được kiểm tra):

  1. SSH vào thiết bị của bạn chạy Ubuntu Touch Developer Preview
  2. Cài đặt các gói phát triển cần thiết. Tùy thuộc vào những gì bạn cần, bạn có thể cần thêm các gói vào danh sách, nhưng đây là lần đầu tiên:

    sudo apt-get install qt5-default qtbase5-dev libqt5v8-5-dev qtdeclarative5-dev libqt5xmlpatterns5-dev qtscript5-dev qttools5-dev qt3d5-dev qtmultimedia5-dev libqt5svg5-dev qtdeclarative5-dev-tools qttools5-dev-tools qtlocation5-dev qtsensors5-dev qtpim5-dev qt-components-ubuntu

  3. Xây dựng ứng dụng C ++ của bạn với hệ thống xây dựng bạn chọn (cmake, qmake, v.v ...)


Cảm ơn rất nhiều từ câu trả lời của bạn! Tôi sẽ thử điều đó với Ubuntu SDK. May mắn thay, Nexus 7 là một thiết bị đầy đủ năng lượng, tôi đã thử nghiệm cách thứ hai và nó cũng hoạt động tốt.
Johannes

May mắn thay, Nexus 7 là một thiết bị đầy đủ năng lượng, tôi đã thử nghiệm cách thứ hai với nhánh máy tính để bàn Ubuntu và nó hoạt động tốt, nhưng Ubuntu Touch Developer Preview không tìm thấy các gói dev đó.
Julian

David: Tôi đang cố gắng làm điều đó nhưng tôi nhận được "Không thể xác định vị trí gói" cho mỗi mục được yêu cầu. Tôi đang làm việc trong một Pandaboard với Ubuntu 12.40. Bạn có thể giúp tôi được không?
HMarioD

3

Có một gợi ý (cách thứ ba, nhưng khó):
1. get Linaro toolchain cho armhf
2. get libhybris và nền tảng-api (từ phablet đội tại launchpad.net )
3. libs get động từ điện thoại ( / lib / arm- linux-gnuispihf/ usr / lib / arm-linux-gnuispihf / )
4. patch mkspecs cho qmake
5. biên dịch
6. thêm tệp <your_app> .desktop vào / usr / share / application /
7. thêm dòng vào / usr / share / qml-phone-shell / Ứng dụng / ứng dụng.js (có thể là tùy chọn, tôi nghĩ vậy)
8. đẩy ứng dụng và tài nguyên của bạn
9. khởi động lại vỏ hoặc điện thoại
10. Ứng dụng đã làm việc của bạn! (Tôi đã thử nghiệm điều này!)


1

Hướng dẫn mở rộng thành lập trên câu trả lời trước. Hãy ghi nhớ: hướng dẫn này mô tả Qt / Qml đang phát triển trên PC cho Ubuntu Touch mà không cần kết nối ssh với thiết bị và yêu cầu công cụ biên dịch chéo như linaro.

PHẦN 1: làm môi trường

  1. Nhận SDK Ubuntu
  2. Nhận toolchain: Linaro hoặc wia sudo apt-get install gcc-arm-linux-gnuispihf cài đặt toolchain và nó phụ thuộc.
  3. Nhận này hai libs libhybrisnền tảng-api cộng libs Qt5 cho armhf (có thể thu được từ thiết bị) hoặc chỉ tải tarball với tất cả các libs (từ tarball libs nhu cầu và tiêu đề của bạn, đặt chúng vào / usr / cánh tay-gnueabihf / lib/ usr / arm-gnuispihf / bao gồm ).
  4. Nhận sửa đổi cấu hình qmake - unrar nó trong mkspecs (ví dụ: của tôi tại / usr / share / qt5 / mkspecs / ). Bên trong thư mục không có bản quyền - qmake.conf . Nếu một cái gì đó bị mất khi biên dịch - nó cần thay đổi biến đường dẫn trong tệp đó.
  5. Đối với Qt Creator tạo cấu hình biên dịch mới: trong Cài đặt biên dịch và triển khai , trên tab Trình biên dịch - thêm trình biên dịch mới ( arm-linux-gnuispihf-gcc ), trên tab Công cụ - thêm cấu hình mới và chỉ định Loại thiết bị - Thiết bị linux chung, Trình biên dịch - những cái mà bạn đã thêm Hồ sơ Qt - chung chung (Tôi đang sử dụng không được biên dịch lại Qt !!!), Qt mkspec - linux-arm-gnuispihf-gcc. Đó là tất cả những gì bạn cần để biên dịch. Để gỡ lỗi - cần chỉ định các thông số khác. Và bên cạnh đó, đó là biên dịch lại Qt tốt hơn từ các nguồn. Nhưng tôi lười quá)

PHẦN 2: triển khai ứng dụng

  1. Wia adb đẩy / data / ubfox / <some_path> ứng dụng và tài nguyên đẩy. Hệ điều hành có thể tìm thấy chúng tại / <some_path> . Lưu ý, không có phần / data / ubfox . Phần đó chỉ cần bởi adb .
  2. Tiếp theo, cần tạo tệp <app_name> .desktop :
    • gốc adb
    • vỏ adb
    • shell ubfox_chroot - chuyển sang bash trên thiết bị
    • cd / usr / share / application - vào thư mục với các tệp * .desktop
    • Sao chép bất kỳ trong số chúng và chỉnh sửa (với vi ) cho mục đích ứng dụng của bạn (tên, biểu tượng, đường dẫn, v.v.)
  3. Bước tiếp theo, giống như trước đây (bạn đã có bash tại thiết bị):
    chỉnh sửa tệp (với vi ) /usr/share/qml-phone-shell/Appluggest/appluggest.js , thêm một phần cho ứng dụng của bạn trong tệp, giống như các ứng dụng khác có trong tập tin đó. Nó phải giống như trong tệp <app_name> .desktop
  4. Khởi động lại shell (bằng cách hủy quá trình shell qml-phone ) hoặc khởi động lại điện thoại ( khởi động lại -p )
  5. Bây giờ bạn có thể khởi chạy ứng dụng của mình từ trang Ứng dụng !

Ví dụ thử nghiệm và tài liệu gốc: Hướng dẫn ENhướng dẫn RU với các liên kết để tải xuống toolchain và các lib thiết yếu.


Chào mừng bạn đến hỏi Ubuntu! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
RolandiXor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.