Qt ile cross compile

Başlatan yamak, 16 Temmuz 2012, 15:50:56

yamak

Arkadaşla aranızda Qt ile cross compile yapan oldumu? Qt for embedded linux library sinin derlemeyi bi türlü beceremedim. Nasıl derleneceği konusunda bilgisi olan varsa yardımcı olabilir mi?

yamak

Hocam qt nin sitesinde şu tip şeyler yazıyo:
İndirdiğim qt-everywhere-opensource-src-4.8.2 kütüphaneyi ./configure ile configure etmemiz gerekiyormuş. Ama bir sürü configurasyon ayarları var.Tabi bunlardan önce qmake i çalışmak istediğimiz platforma göre de ayarlamak gerekiyormuş. Bu ayarları benim çalıştığım platforma göre nasıl ayarlayacam konfigurasyon ayarlarını neye göre seçecem tam olarak bilmiyorum. Doğru düzgün açıklayan biyer bulamadım.

Erdem

Geçiş derleme işlemi bir (cross compiling) uygulamayı bir makinede derlerken, amaç başka bir makine için çalıştırılabir kod elde etmekmiş.

Böyle bir durum varsa -platform burada ana makinenin, sistemin mimarisini belirtecek şekilde -xplatform ise hedef mimariyi belirtecek şekilde ayarlamak gerekiyormuş.

Onun dışında zaten linux'ta derleme işlemleri neredeyse standarttır  ;)

./configure
make
make install

Kurulum işlemini de burada anlatmışlar:

http://doc.qt.nokia.com/4.7-snapshot/qt-embedded-install.html

Tagli

Alıntı yapılan: Erdem  - 16 Temmuz 2012, 18:38:58
Onun dışında zaten linux'ta derleme işlemleri neredeyse standarttır  ;)
Sıfırdan sistem kurmaya çalışıyorsan hiç de kolay ve standart olmuyor. Hele de cross compile yapıyorsan. Şu sitedeki adımları incelersen ne kadar çok ayrıntısı olduğunu görebilirsin. Ki örnek verdiğim site aynı makine için derleme yapıyor. Yine de host sistemin dosyalarını kullanmadığı için bir çeşit cross compile sayılır.

Bu arada, "Cross Compile"ın Türkçesi genelde "Çapraz Derleme" olarak anılır ama bu ifade bana saçma geliyor. "Geçiş Derlemesi" terimini duymamıştım, her ne kadar mantıklı gibi gözükse de biraz kulak tırmalıyor bence. Bana sanki "Karşı Derleme" daha uygun olurmuş gibi geldi.
Gökçe Tağlıoğlu

yamak

Host kısmını hallettim. Yani embedded linux için qmake i oluşturdum.Ama executable dosyayı pandaboard a yükleyip çalıştırmaya çalıştığımda,bash "No such file or directory" hatası veriyo. Acaba pandaboard tarafında da birşeyler yapılması gerekiyo mu? Host tarafında kütüphaneyi /usr/local/Qt dizinine kurdum. Bu qt klasörünü pandaboard ta opt dizine kopyalayıp /opt/Qt/liib i PATH'e ekledim ama yine de olmadı. Bu konuda bi fikri olan varmı? İki haftadır uğraşıyorum tırlatacam artık. :(

fatihinanc

Alıntı yapılan: yamak - 27 Temmuz 2012, 14:58:51
executable dosyayı pandaboard a yükleyip çalıştırmaya çalıştığımda,bash "No such file or directory" hatası veriyo.

Hocam eğer o hatayı alıyorsan cross compile işlemini çalıştırdığın platforma(OMAP4) uygun olarak yapamamış olma ihtimalin çok yüksek.
Pandaboard tarafında hangi linux dağıtımını kullanıyorsun ?

Alıntı yapılan: Tagli - 23 Temmuz 2012, 13:59:28
Bu arada, "Cross Compile"ın Türkçesi genelde "Çapraz Derleme" olarak anılır ama bu ifade bana saçma geliyor. "Geçiş Derlemesi" terimini duymamıştım, her ne kadar mantıklı gibi gözükse de biraz kulak tırmalıyor bence. Bana sanki "Karşı Derleme" daha uygun olurmuş gibi geldi.

"Geçiş Derlemesi" bana da biraz garip bir terim gibi geldi. Yorucu bir ifade.
Aslında "Çapraz Derleme" bana mantıklı geliyor. Bir makinadan diğerine kod derlerken mimarileri tek yönde çaprazlamış oluyoruz aslında...
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

yamak

Hocam 12.04 kullanıyorum. Bir de şunu farkettim. tüm derlediğim uygulamalar qt nin kendi examples ları da dahil olmak üzeri 14 mb yer kaplıo. Normalde 22 kb lık uygulama bu kadar fazla yer kaplıyo. Benim de şüphelendiğim nokta orası omap4 de çalışacak şekülde executable oluşturmuyo galiba.

Tagli

Çalıştırılabilir dosyayı file komutuyla inceledin mi?
Gökçe Tağlıoğlu

yamak

Siz söyledikten sonra baktım.
Şöyle bi çıktı verdi.
ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.14, not stripped

controller

ABI sorununa benziyor (EABI, OABI)

Hedef sisteminiz ile yüklediğiniz uygulamanın aynı ABI olmasına dikkat ediniz.
Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

yamak

Hedef sistem PandaBoard üzerinde ARM işlemci var. Bildiğim kadarıyla ARM EABI kullanıyo. Kütüphaneleri de  code sourcery arm-none-gnueabi ile derliyorum.Yani arada bi uyuşmazlık yok gibi.

Tagli

"No such file or directory" hatası pek kütüphane hatasına da benzemiyor. Dosyanın çalıştırma izni var mı? Yani "x" bayrağı var mı? ls -l komutu ile kontrol edebilirsin. İzin yoksa, chmod +x dosya_adi ile çalıştırma izni ver.
Gökçe Tağlıoğlu

yamak

Yok hocam çalıştırma izni var. Bence düzgün executable oluşturulamıyo ondan kaynaklanıyo. Qt nin tüm example ları ve beni uyuglamalarım 14 mb yer kaplıyo böyle bişey olabilir mi? Aynı uyuglamaı pandaboard üzerinde derliyoru 22 kb lık executable oluşurken bilgisayarda cross compile ettiğimde 14 mb lık executable oluşuyo.

fatihinanc

Pandaboard tarafında Ubuntu 12.04 kullanıyorsan yani aşağıdaki linktekilerden herhangi birisini kullanıyorsan arm-none-gnueabi yerine arm-none-gnueabihf kullanman gerekir. Çünkü Ubuntu 12.04 hf(hardware float) olarak derlendiği için CC olarak da hf toolchain kullanmak gerekir. "armel" olsa idi o zaman arm-none-gnueabi kullanabilirdik. Fakat "armhf" olduğu için arm-none-gnueabihf kullanmak lazım.

http://rcn-ee.net/deb/rootfs/precise/
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

Tagli

HF olmadan da çalışması gerekmez mi? Sadece donanımsal HF komutlarını kullanmadığı için daha yavaş çalışır diye düşünüyorum. Yanılıyor muyum? Bu arada, Mentor'un sitesindeki derleyiciler arasında HF seçeneği yok. Acaba oradaki derleyicilere option olarak mı veriliyor yoksa bunların HF desteği yok mu?

Qt uygulamaları dışında, mevcut derleyicinle "Hello World" derleyip çalıştırabiliyor musun? Bunu önce statik, sonra da normal derleyip denemek lazım.
Gökçe Tağlıoğlu