Apakah ada cara untuk mengkompilasi program Qt5, ditulis dengan c ++, ke Ubuntu Touch?

9

Saya membuat program dengan Qt5 dan C ++, dan saya ingin mengkompilasi program saya untuk Ubuntu Touch Preview atau lengan desktop Ubuntu.

Saya menjalankan sistem tersebut pada Nexus 7. Saya telah menemukan compiler C ++ yang tepat ( arm-linux-gnueabihf-g++), tetapi bagaimana saya bisa membuat Qt5 berfungsi?

Johannes
sumber
Jika jawaban @David Planella telah menyelesaikan masalah Anda, Anda harus menandainya sebagai "diterima".
Fouric

Jawaban:

11

Cara mudah

Anda dapat menggunakan fitur eksperimental dari Ubuntu SDK Alpha. Keindahannya adalah Anda tidak perlu melakukan kompilasi silang.

Koneksi pertama ke perangkat Anda:

  1. Sambungkan perangkat Anda ke port USB komputer Anda
  2. Mulai Qt Creator
  3. Klik pada tab perangkat
  4. Klik tombol Enable untuk mengaktifkan mode pengembang
  5. Buka Alat> Ubuntu> Perangkat> Aktifkan> Kompilasi Cpp pada perangkat Ubuntu (percobaan)

Kemudian mulailah meretas:

  1. Buka proyek aplikasi Anda di Qt Creator
  2. Pergi ke Bangun> Ubuntu> Bangun proyek C ++ pada perangkat Ubuntu (percobaan)

Membangun proyek C ++ Sentuh pada perangkat

Dan pergilah! :-)

Jika Anda menyukai tantangan

Anda bisa mengkompilasi aplikasi di perangkat dengan tangan. Anda mungkin ingin mencoba langkah-langkah berikut (belum diuji):

  1. SSH ke perangkat Anda yang menjalankan Pratinjau Pengembang Sentuh Ubuntu
  2. Instal paket pengembangan yang dibutuhkan. Bergantung pada apa yang Anda butuhkan, Anda mungkin perlu menambahkan paket ke daftar, tetapi inilah langkah pertama:

    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. Bangun aplikasi C ++ Anda dengan sistem build pilihan Anda (cmake, qmake, dll ...)

David Planella
sumber
Terima kasih banyak dari jawaban Anda! Saya akan mencobanya dengan Ubuntu SDK. Untungnya Nexus 7 adalah perangkat yang penuh daya, saya menguji cara kedua dan bekerja dengan baik.
Johannes
Untungnya Nexus 7 adalah perangkat yang penuh daya, saya menguji cara kedua dengan lengan desktop Ubuntu dan berfungsi dengan baik, tetapi Pratinjau Pengembang Sentuh Ubuntu tidak menemukan paket dev tersebut.
Johannes
David: Saya mencoba melakukan itu tetapi saya mendapatkan "Tidak dapat menemukan paket" untuk setiap item yang diminta. Saya bekerja di Pandaboard dengan Ubuntu 12.40. Bisakah kamu membantuku?
HMarioD
3

Ada saran lain (cara ketiga, tetapi sulit):
1. dapatkan linaro toolchain untuk armhf
2. dapatkan libhybris dan platform-api (dari phablet-team di launchpad.net )
3. dapatkan lib dinamis dari perangkat ( / lib / arm- linux-gnueabihf dan / usr / lib / arm-linux-gnueabihf / )
4. patch mkspecs untuk qmake
5. kompilasi
6. tambahkan <your_app> .desktop file ke / usr / share / aplikasi /
7. tambahkan baris ke / usr / share / qml-phone-shell / Applications / application.js (mungkin opsional, saya pikir)
8. dorong aplikasi dan sumber daya Anda
9. reboot shell atau telepon
10. Aplikasi Anda bekerja! (Saya menguji ini!)

pengguna135193
sumber
1

Instruksi diperluas ditemukan pada jawaban sebelumnya. Ingat: instruksi ini menjelaskan pengembangan Qt / Qml pada PC untuk Ubuntu Touch tanpa koneksi ssh dengan perangkat dan memerlukan alat lintas-kompilasi seperti linaro.

BAGIAN 1: membuat lingkungan

  1. Dapatkan SDK Ubuntu
  2. Dapatkan toolchain: Linaro atau gunakan sudo apt-get install gcc-arm-linux-gnueabihf instal toolchain dan dependensinya.
  3. Dapatkan dua lib ini libhybris dan platform-api plus lib Qt5 untuk armhf (dapat diperoleh dari perangkat) atau cukup unduh tarball dengan semua lib (dari tarball lib dan header kebutuhan Anda, letakkan di / usr / arm-gnueabihf / lib dan / usr / arm-gnueabihf / termasuk ).
  4. Dapatkan konfigurasi qmake yang dimodifikasi - hapus arsipnya di mkspecs (misalnya, milik saya di / usr / share / qt5 / mkspecs / ). Di dalam direktori unkrip - qmake.conf . Jika ada sesuatu yang terlewatkan saat dikompilasi - itu perlu untuk mengubah variabel path dalam file itu.
  5. Untuk Qt Creator membuat profil kompilasi baru: dalam pengaturan Kompilasi dan penerapan , pada tab Compiler - tambahkan kompiler baru ( arm-linux-gnueabihf-gcc ), pada tab Tools - tambahkan profil baru dan tentukan jenis Perangkat - perangkat linux umum, Kompiler - yang, bahwa Anda ditambahkan Profil Qt - generik (Saya menggunakan Qt tidak dikompilasi ulang !!!), Qt mkspec - linux-arm-gnueabihf-gcc. Itu semua yang Anda butuhkan untuk kompilasi. Untuk debugging - perlu ditentukan params lainnya. Dan di sampingnya, kompilasi ulang Qt dari sumber lebih baik. Tapi saya malas jadi)

BAGIAN 2: menyebarkan aplikasi

  1. Wia adb push / data / ubuntu / <some_path> aplikasi dan sumber daya push. OS dapat menemukannya di / <some_path> . Catatan, tidak ada bagian / data / ubuntu . Bagian itu hanya dibutuhkan oleh adb .
  2. Selanjutnya, perlu membuat file <app_name> .desktop :
    • adb root
    • adb shell
    • ubuntu_chroot shell - beralih ke bash di perangkat
    • cd / usr / share / aplikasi - masuk folder dengan file * .desktop
    • Salin salah satunya dan edit (dengan vi ) untuk tujuan aplikasi Anda (nama, ikon, jalur, dll)
  3. Langkah selanjutnya, sama seperti sebelumnya (Anda sudah di bash di perangkat):
    edit file (dengan vi ) /usr/share/qml-phone-shell/Applications/applications.js , tambahkan bagian untuk aplikasi Anda dalam file, sama seperti aplikasi lain miliki dalam file itu. Itu harus sama dengan di dalam file <app_name> .desktop
  4. Reboot shell (dengan mematikan proses qml-phone-shell ) atau reboot ponsel ( reboot -p )
  5. Sekarang Anda dapat meluncurkan aplikasi Anda dari halaman Aplikasi !

Contoh uji dan bahan asli: Instruksi EN dan instruksi RU dengan tautan untuk mengunduh rantai alat dan lib esensial.

Dmitry Zagnoyko
sumber
Selamat Datang di Tanya Ubuntu! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
RolandiXor