Picproje Elektronik Sitesi

BİLGİSAYAR => Linux => Konuyu başlatan: yamak - 16 Temmuz 2012, 15:50:56

Başlık: Qt ile cross compile
Gönderen: yamak - 16 Temmuz 2012, 15:50:56
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?
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 16 Temmuz 2012, 17:30:00
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.
Başlık: Ynt: Qt ile cross compile
Gönderen: Erdem - 16 Temmuz 2012, 18:38:58
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 (http://doc.qt.nokia.com/4.7-snapshot/qt-embedded-install.html)
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 23 Temmuz 2012, 13:59:28
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 (http://www.linuxfromscratch.org/lfs/view/stable/) 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.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 27 Temmuz 2012, 14:58:51
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. :(
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 28 Temmuz 2012, 05:17:20
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...
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 30 Temmuz 2012, 10:36:42
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.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 30 Temmuz 2012, 11:50:06
Çalıştırılabilir dosyayı file komutuyla inceledin mi?
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 30 Temmuz 2012, 12:11:20
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
Başlık: Ynt: Qt ile cross compile
Gönderen: controller - 30 Temmuz 2012, 13:26:36
ABI sorununa benziyor (EABI, OABI)

Hedef sisteminiz ile yüklediğiniz uygulamanın aynı ABI olmasına dikkat ediniz.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 30 Temmuz 2012, 13:37:30
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.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 30 Temmuz 2012, 13:43:41
"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.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 30 Temmuz 2012, 14:02:22
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.
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 31 Temmuz 2012, 08:59:45
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/ (http://rcn-ee.net/deb/rootfs/precise/)
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 31 Temmuz 2012, 09:15:14
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.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 31 Temmuz 2012, 10:45:30
Qt uygulaması dışında bi uygulama denemedim. Ama eve gidince deneyecem.Bu arada "arm-none-gnueabihf" nereden bulabilirim. Mentor un sitesinde yok da.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 31 Temmuz 2012, 11:04:48
Ubuntu Software Center'da var. Ben denemedim. Gerçi oradakiler de genelde yine Sourcery derleyicileri oluyor. Belki üzerinde biraz değişiklik yapıp paketlemişlerdir. O yüzden, HF'li derleyici belki Sourcery'nin uygun option'larla çalışan hali olabilir dedim ama sadece tahmin. Sonuçta, Sourcery derleyicileri bildiğim kadarıyla köklü ve sıklıkla kullanılan derleyiciler, HF desteklerinin olmaması kulağa mantıklı gelmiyor.
Başlık: Ynt: Qt ile cross compile
Gönderen: muuzoo - 31 Temmuz 2012, 11:59:46
Hf derlenirken parametre olarak verilebiliyor zaten. İsimlendirmede ek bir farklilik yok. Stm32f4 için sourcerry kullaniyorum, hard float ya da soft float secilebiliyir.
Başlık: Ynt: Qt ile cross compile
Gönderen: sseedat - 31 Temmuz 2012, 12:29:51
..
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 31 Temmuz 2012, 12:33:14
Alıntı yapılan: muuzoo - 31 Temmuz 2012, 11:59:46
Hf derlenirken parametre olarak verilebiliyor zaten. İsimlendirmede ek bir farklilik yok. Stm32f4 için sourcerry kullaniyorum, hard float ya da soft float secilebiliyir.
Hocam bu parametreyi nasıl veriyoruz.Bi de bu hf(hardware float) olayı tam olarak ne oluyo.İşlemcinin fpu sunu kullanarak derleme falan mı?

mesaj birleştirme:: 31 Temmuz 2012, 13:19:15

Bi de bu angstrom toolchain leri var bunlar da codesourcery nin mi yoksa anstrom un kendi toolchain leri mi?
Başlık: Ynt: Qt ile cross compile
Gönderen: muuzoo - 31 Temmuz 2012, 21:34:08
Alıntı yapılan: yamak - 31 Temmuz 2012, 12:33:14
Hocam bu parametreyi nasıl veriyoruz.Bi de bu hf(hardware float) olayı tam olarak ne oluyo.İşlemcinin fpu sunu kullanarak derleme falan mı?


mesaj birleştirme:: 31 Temmuz 2012, 13:19:15


Bi de bu angstrom toolchain leri var bunlar da codesourcery nin mi yoksa anstrom un kendi toolchain leri mi?

Aynen dahili FPU birimini kullanarak fp işlemlerinin gerçekleştirilmesini sağlıyor. Derleyice ek olarak şu komutları vermek gerekiyor : -mfloat-abi=hard

(http://img6.imageshack.us/img6/5296/sorcerry.png)

Sourcerry'nin kendi belgelerinden bilgilendirme:


Alıntı YapVFP hardware floating-point support using the soft-float ABI. This is selected by the
-mfloat-abi=softfp option. When you select this variant, the compiler generates VFP
floating-point instructions, but the resulting code uses the same call and return conventions as
code compiled with software floating point.

Alıntı YapVFP hardware floating-point support using the VFP ABI, which is the VFP variant of the Procedure
Call Standard for the ARM® Architecture (AAPCS). This ABI uses VFP registers to pass function
arguments and return values, resulting in faster floating-point code. To use this variant, compile
with -mfloat-abi=hard.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 02 Ağustos 2012, 23:49:49
Fatih hocam dediğinizde haklıymışsıınız ubuntu 11.10 de çalıştı.Ama bu seferde mouse kullanamıyorum . Örneğin uygulumayı ./hello -qws diye çalıştrıyorum ekran yeşil oluyo yani masaüstü görünmüyo ekranda iki imleç oluyo ve mouse hareket ettirdiğimde imlecin geçtiği yerlerden yeşillik gidiyo masaüstü göürünüyo. Yani anlayacağınız mouse u kullanamıyorum  :)
Ve uygulamayı çalıştırdığımda
Alıntı YapCould not initialize virtual console switching
diye bi hata veriyo.Sizce bu hatanın kaynağı ne olabilir?
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 07 Ağustos 2012, 14:29:46
Bu hata hakkında bi fikri olan yok mu?
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 09 Ağustos 2012, 13:20:37
Bana kalırsa Ubuntu 12.04 e hf toolchain leri yükleyip dene bir de.

sudo apt-get install gcc-arm-linux-gnueabihf
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 09 Ağustos 2012, 14:45:06
12.04 değilde angstrom kurmaya çalışıyorum ama olmuyo. narcissus dan oluşturdum angstrom bir türlü çalışmıyo orada pandaboard es göre değilde pandaboard a göre rootfs oluşturabiliyosun.Galiba ondan kaynaklanıyo. Bence angstromda böyle sorunlar olmaz.
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 09 Ağustos 2012, 14:53:48
Kernel olarak aşağıdakini deneyebilir misin ?
http://www.angstrom-distribution.org/demo/pandaboard/ (http://www.angstrom-distribution.org/demo/pandaboard/)

rootfs i de narcissus'tan minimum şekilde oluşturmayı dene.

Mantık olaarak olması lazım. Çünkü PandaBoard ile PandaBoard ES arasında çok bir fark yok. İki board da OMAP4 taşıyor.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 09 Ağustos 2012, 15:06:43
Başka yerden bulunabileceğini pek sanmıyorum. Sonuçta Mentor yapıyor. Gerçi Ubuntu Software Center'daki de galiba bunun bir türevi (pek emin değilim). Lite versiyonu sitesinden çekilebiliyor ama üye olmak gerekli.

"Yok ben üye olmak istemiyorum" diyorsan, şu linki (https://sourcery.mentor.com/GNUToolchain/subscription3057?lite=arm&lite=ARM&signature=4-1333738517-0-b2bd63e319a8c1602a4e96f1cd003e16fb840d37) bir dene. Bana üye olduktan sonra email ile atmışlardı bunu.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 09 Ağustos 2012, 15:25:12
Tam sürümünün bildiğim kadarıyla belirgin bir artısı yok. Yanında teknik destek ve IDE ile birlikte geliyor. Yani bildiğim kadarıyla optimizasyon veya kod boyutu gibi sınırlamalar yok Lite versiyonda.
Başlık: Ynt: Ynt: Qt ile cross compile
Gönderen: muuzoo - 09 Ağustos 2012, 15:26:54
Alıntı yapılan: gerbay - 09 Ağustos 2012, 15:20:47
Teşekkür ederim hocam, indiriyorum..

aslında biryerlerden bunun full sürümünü bulmak lazım..
Bu ara kampanyası var. Lite sürümünü $99 a personel sürümüne yükseltebiliyorsunuz
Başlık: Ynt: Ynt: Qt ile cross compile
Gönderen: muuzoo - 09 Ağustos 2012, 15:28:00
Alıntı yapılan: Tagli - 09 Ağustos 2012, 15:25:12
Tam sürümünün bildiğim kadarıyla belirgin bir artısı yok. Yanında teknik destek ve IDE ile birlikte geliyor. Yani bildiğim kadarıyla optimizasyon veya kod boyutu gibi sınırlamalar yok Lite versiyonda.

Tam sürümünde performans acısından daha verimli olan kütüphaneler ve gelişmiş debug desteği var.
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 09 Ağustos 2012, 18:00:23
Alıntı yapılan: fatihinanc - 09 Ağustos 2012, 14:53:48
Kernel olarak aşağıdakini deneyebilir misin ?
http://www.angstrom-distribution.org/demo/pandaboard/ (http://www.angstrom-distribution.org/demo/pandaboard/)

rootfs i de narcissus'tan minimum şekilde oluşturmayı dene.

Mantık olaarak olması lazım. Çünkü PandaBoard ile PandaBoard ES arasında çok bir fark yok. İki board da OMAP4 taşıyor.
Kernel olarak narcissus da oluşturduğum rootfs in boot klasaründekini kullanıyodum ama bunu da bi deneyeyim.

mesaj birleştirme:: 09 Ağustos 2012, 18:03:05

http://www.angstrom-distribution.org/demo/pandaboard/ (http://www.angstrom-distribution.org/demo/pandaboard/)
Bir de bu sitede mesela MLO nun üzerinde "?" işareti var bu ne anlama geliyo.
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 09 Ağustos 2012, 18:55:26
Alıntı yapılan: yamak - 09 Ağustos 2012, 18:00:23
Kernel olarak narcissus da oluşturduğum rootfs in boot klasaründekini kullanıyodum ama bunu da bi deneyeyim.

mesaj birleştirme:: 09 Ağustos 2012, 18:03:05

http://www.angstrom-distribution.org/demo/pandaboard/ (http://www.angstrom-distribution.org/demo/pandaboard/)
Bir de bu sitede mesela MLO nun üzerinde "?" işareti var bu ne anlama geliyo.

O önemli birşey değil. Web sitesi tarafından dosyanın tanınmadığını belirten bir simge.

Verdiğim linkteki kernel biraz eski u-boot argümanların 2.6.37 kernel ve üzeri için ayarlanmışsa kernel decompress ten sonra ekranda bir yazı görememe ihtimalin yüksek. Eğer öyle olursa onu da hallederiz inşaallah ;)
Başlık: Ynt: Qt ile cross compile
Gönderen: yamak - 11 Ağustos 2012, 13:36:56
Dediğiniz kerneli kullanarak kurdum fakat bişey olmadı.Ekrana hiçbir görüntü çıkmadı seriporttan da veri alamadım. Sorun ne anlamadım.Bi ara boot bölümüne ilk olarak MLO nun kopyalanması gerektiğini duymuştum.Böyle bişey var mı gerçekten
Başlık: Ynt: Qt ile cross compile
Gönderen: fatihinanc - 11 Ağustos 2012, 15:13:29
Selam,

u-boot ekranında sayarken herhangi bir tuşa basıp u-boot komut satırına düşmeyi sağla. Ve arkasından sıra ile aşağıdaki komutları her bir satırı tek seferde olacak şekilde gir ;)


setenv bootargs console=ttyS2,115200n8
saveenv
reset


Kernel 2.6.37 den küçük olduğu için boot argümanlarını(ttyS2) uygun olarak değiştirmek gerekiyor. Mesela bu şekilde ayarlanmış bir u-boot senin 2.6.35 kernelini çalıştıracak fakat bu sefer de 2.6.37 ve üzeri kernel lar için çalışmayacaktır.
Aslında sistem çalışıyor fakat seri port doğru seçilmediği için ekrana yazılar ve dolayısiyle de konsol gelmiyor.

Tekrar eski hale dönek için de ttyS2 yerine ttyO2 yazarsan 2.6.37 ve üzeri kernel lar için uygun portu seçmiş olursun.

Kolay Gelsin.
Başlık: Ynt: Qt ile cross compile
Gönderen: Tagli - 12 Ağustos 2012, 11:48:23
Evet, MLO boot bolumune konan ilk dosya olmali. Adinin neden MLO oldugunu hatirlamiyorum ama bu dosya aslinda x-loader olarak bilinen ve uboot'tan once calisan bir bootloader.

Ote yandan, boot bolumune genelde mlo, uboot ve bazen de uimage koyariz. Ucunu secip surukledigimiz zaman isletim sistemi, kopyalamayi alfabetik siraya gore yaptigindan once MLO kopyalanir ve sorun olmaz.