QT Kütüphanelerinin Boyutu Neden Bu Kadar Çok Büyük?

Başlatan dert36, 21 Ekim 2013 - 22:58:32

« önceki - sonraki »

0 Üyeler ve 8 Ziyaretçi konuyu incelemekte.

dert36

Ben  Windows XP yüklü bilgisayarıma öğrenmek amaçlı QT'yi kurdum. Kurduktan sonra denemek amaçlı bir iki tane metin kutusu ve buton ekledim. Programın hiç bir işlevi yok. Sadece metin kutusu ve buton var. Başka bişey yok. Programı derledim. Programın klasörüne girdim. Programı açarken eksik dll hatası verdiği dll kütüphanelerini programın klasörünün içine attım. Program klasörü 320 MB oldu. Hiç bir işlevi olmayan dünyanın belkide en ufak programı 320 mb boyutunda nasıl oluyor anlamıyorum? Bu kütüphane dosyalarının boyutları neden bu kadar yüksek? Bu programın boyutunu düşürmenin bir yolu yok mu ?

ekremsenturk

Sorun Windows XP'ye özel olabilir. Konun Ubuntu ile bir ilgisi yok.

iskenderoguz

Muhetmelen debug modunda derlediniz. Release ile derlerseniz boyutlar daha ufak olur.
Ayrıca debug dll'leri ile release dll'leri arasında da boyut farkı var

osmancık

QT hakkında bilgim yok kullanmadım ancak mantık yürütüyorum. QT Windows'un kütüphanelerini kullanmadan herşeyi kendi içerisinde yapıyorsa o yüzden büyük olabilir. Örneğin bir pencere oluşturmak için Windows'un kütüphanesi vardır. QT bu kütüphaneyi kullanmayıp kendisine bir pencere kütüphanesi yazdıysa dosya boyutu büyük olacaktır.
.                .-.
         .-'``(|||)
      ,`\ \    `-`.
     /   \ '``-.   `
   .-.  ,       `___:
  (::: ) :        ___     UBUNTU
   `-`  `       ,   :
     \   / ,..-`   ,
      `./ /    .-.`
         `-..-(   )
                `-`

dert36

Alıntı yapılan: ekremsenturk - 22 Ekim 2013 - 11:32:58
Sorun Windows XP'ye özel olabilir. Konun Ubuntu ile bir ilgisi yok.

Ubuntu ile ilgili olduğunu söylemedim ki :)


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Ekim 2013 - 21:23:36

Alıntı yapılan: iskenderoguz - 22 Ekim 2013 - 13:30:10
Muhetmelen debug modunda derlediniz. Release ile derlerseniz boyutlar daha ufak olur.
Ayrıca debug dll'leri ile release dll'leri arasında da boyut farkı var

Evet doğru söylüyorsunuz debug modunda derlediğim için kütüphanelerin boyutu büyük olmuş. Release modunda derleyince 40 mb'ye düştü


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Ekim 2013 - 21:24:07

Alıntı yapılan: osmancık - 22 Ekim 2013 - 15:24:08
QT hakkında bilgim yok kullanmadım ancak mantık yürütüyorum. QT Windows'un kütüphanelerini kullanmadan herşeyi kendi içerisinde yapıyorsa o yüzden büyük olabilir. Örneğin bir pencere oluşturmak için Windows'un kütüphanesi vardır. QT bu kütüphaneyi kullanmayıp kendisine bir pencere kütüphanesi yazdıysa dosya boyutu büyük olacaktır.

Bence de bu mantıklı :)

krwlng

Bence yine de 40mb çok büyük bir boyut bahsettiğiniz uygulama için, önemli olan sistemde Qt çatısının kurulu olması, bu neredeyse çoğu dil için böyledir. .Net ile bir uygulama yazıp dotnetfx paketini içine atarsanız boyut uçar gider, ama kullanıcı o paketi sistemine kendisi kurarsa uygulamanızın boyutu şişmemiş olur, bu da öyle bir şey, Qt çatısı (Framework) kullanılan sisteme kurulursa ki normali odur, her uygulamanıza ayrıca çatı eklemenize gerek kalmaz. Yani bence bu sizinle değil o uygulamayı kullanacak kişi ile alakalı, yoksa örnekleri mevcut bir arkadaş Qt ile memurlar.net için bir uygulama yazmıştı, çokta işlevsel bir uygulama ama her şey dahil dosya boyutu 96kb bu açıdan düşünün.
http://twitter.com/yusuFBrn

Ali İsmail Korkmaz, FENERBAHÇE Yıkılmaz!

dert36

Alıntı yapılan: krwlng - 24 Ekim 2013 - 21:39:08
Bence yine de 40mb çok büyük bir boyut bahsettiğiniz uygulama için, önemli olan sistemde Qt çatısının kurulu olması, bu neredeyse çoğu dil için böyledir. .Net ile bir uygulama yazıp dotnetfx paketini içine atarsanız boyut uçar gider, ama kullanıcı o paketi sistemine kendisi kurarsa uygulamanızın boyutu şişmemiş olur, bu da öyle bir şey, Qt çatısı (Framework) kullanılan sisteme kurulursa ki normali odur, her uygulamanıza ayrıca çatı eklemenize gerek kalmaz. Yani bence bu sizinle değil o uygulamayı kullanacak kişi ile alakalı, yoksa örnekleri mevcut bir arkadaş Qt ile memurlar.net için bir uygulama yazmıştı, çokta işlevsel bir uygulama ama her şey dahil dosya boyutu 96kb bu açıdan düşünün.

O zaman ben nerde hata yapıyorum :( QT 1 GB'den fazla yer kaplıyor. Şimdi programı çalıştırmak istediğim tüm bilgisayarlara nasıl kurarım bu programı?:( opera, skype'ta QT ile yazılmış onlar bu işi nasıl hallediyorlar?

heartsmagic

Onlar bu işi kütüphaneleri sana kurdurarak yapıyorlar. Skype kurmayı denersen sisteme göreceksin ki QT kütüphanelerini de bağımlılık olarak kuracaktır. Windows tarafı için Skype farklı şekilde yazılıyordur zaten, QT ile yaptıklarını sanmıyorum.
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

iskenderoguz

1GB nin hepsini kopyalamayacaksın. Sadece kullandığın kütüphaneler. Mesela veritabanı olarak mysql kullanmışsın. O zaman qt4-mysql gibi bir paket vardır linux tarafında onu da taşıman gerekir. Windows tarafında ise exe'ye çift tıkladığın zaman sana bir hata mesajı döndürür. ...dll eksik diye. Qt nin içinde o dll' yi bulup exe'nin yanına taşıman gerekir.

dert36

Alıntı yapılan: heartsmagic - 25 Ekim 2013 - 11:55:37
Onlar bu işi kütüphaneleri sana kurdurarak yapıyorlar. Skype kurmayı denersen sisteme göreceksin ki QT kütüphanelerini de bağımlılık olarak kuracaktır. Windows tarafı için Skype farklı şekilde yazılıyordur zaten, QT ile yaptıklarını sanmıyorum.

QT ile program yazmak ne kadar da karmaşıkmış. Araştırabileceğim fazla dökümanda yok. Büyük bir sır gibi. QT platformdan bağımsız değil miydi? neden skype'nin windows tarafı için farklı bir program kullanıyorlar ki ? QT windows tarafında hiç bir işe yaramıyor mu?


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 25 Ekim 2013 - 20:02:54

Alıntı yapılan: iskenderoguz - 25 Ekim 2013 - 13:52:17
1GB nin hepsini kopyalamayacaksın. Sadece kullandığın kütüphaneler. Mesela veritabanı olarak mysql kullanmışsın. O zaman qt4-mysql gibi bir paket vardır linux tarafında onu da taşıman gerekir. Windows tarafında ise exe'ye çift tıkladığın zaman sana bir hata mesajı döndürür. ...dll eksik diye. Qt nin içinde o dll' yi bulup exe'nin yanına taşıman gerekir.

Hepsini kopyalamadım zaten. Sadece istediği dll dosyalarını kopyaladım. keşke eksik dll hatası verse. microsoft visual c++ runtime library gibi bir hata veriyor.

ekremsenturk

#10
Sanırım "Platform bağımsız" kavramını yanlış alglıyorsun.

Bir Bilgisayrı ve bilgisayardaki bütün programları işletim sistemi çalıştırır. Bazı yazılımlar sadece belirli işletim sistemlerinde mevcuttur. Meselâ İnterneExplorer. Bazı yazılımların ise her (veya bir den fazla) işletim sistemi için sürümleri var. Meselâ Firefox.

Örnek olarak Java her yaygın sistemde ve donanımda bulunabiliyor. Ama her sistem için ayrı, o sistem için olan sürümü var. Java, platform bağımsız bir yazılım. Ama her sistemde aynı yazılım değil.

Ve işletim sistemlerinin sürümleride yine birbirleri ile uyumlu değildir. Win 8 için geliştirlen bir program, Win XP'de çalışmaz. Hatta Win XP SP1 için geliştirilmiş bir program, Win XP SP 2'ye yükseltildiğinde çalışmaz.

Windows XP'de derleğin bir program Ubuntu'da veya Windows Vista'da veya Windows 7'de çalışmaz. Çünkü o sistemde kullanılan .dll ve herhangi farklı dosyaların sürümleri, o sistemin o sürümü için geliştirilmişler.

Bildiğim bir örnek vereyim:
Basic ile bir Animasyon geliştirdim. Bu Animasyon sadece Yabasic 2.7xxx derleyicisi (yorumlayıcısı) ile çalışıyor. Farklı Basic yorumlayıcılarında veya Yabasic 2.9xxx sürümünde bir sürü hata verecektir. Animasyonu bir başka kişiye göndereceğim ve o kişi de Windows kullanıyor. Yabasic'in Windows ve Unix sürümleri var ve her iki sürüm de tamamen aynı çalışıyorlar. Benim Linux'ta yazdığım kodlar, Windows'tada aynı şekilde çalışacaklar. Ancak, Animasyon'umu alacak kişi bu uygulamayı çalıştırabilmek için, Yabasic'in Windows sürümünü indirmeli (veya ben script ile birlikte göndereceğim) Yabasic'in Windows sürümünü başka bir Linux sistemde Wine ile birlikte kurdum ve Animasyonu denedim ve çalıştı.

Daha önce de bir Animasyon hazırlayıp, göndermiştim. Ancak Chipmunk Basic kullanmıştım ve Chipmunk Basic'in Windows sürümünde ve Mac sürümünde bazı sisteme özel kod'lar mevcut ve Linux'ta yazdığım Animasyon'u, Windows için tekrar kısmen düzeltmem gerekti. Bir de alıcının Windows'u, (bu durumumda) 32bit olmak zorunda. Veya, diğer şahıs, 32 bit için gerekli kütüphaneleri kurabilecek kadar bilgili olmalı.

Şimdi benim yazdığım Animasyon, Platform bağımsız bir Animasyon. Sadece, Windows için olan sürümünde, klasörün içine, yabasic yerine yabasic.exe dosyasını eklemiş oldum ve başlatıcının uzantısıda .sh değil, .bat olmuş oldu.

dert36

Alıntı yapılan: ekremsenturk - 25 Ekim 2013 - 23:23:38
Sanırım "Platform bağımsız" kavramını yanlış alglıyorsun.

Bir Bilgisayrı ve bilgisayardaki bütün programları işletim sistemi çalıştırır. Bazı yazılımlar sadece belirli işletim sistemlerinde mevcuttur. Meselâ İnterneExplorer. Bazı yazılımların ise her (veya bir den fazla) işletim sistemi için sürümleri var. Meselâ Firefox.

Örnek olarak Java her yaygın sistemde ve donanımda bulunabiliyor. Ama her sistem için ayrı, o sistem için olan sürümü var. Java, platform bağımsız bir yazılım. Ama her sistemde aynı yazılım değil.

Ve işletim sistemlerinin sürümleride yine birbirleri ile uyumlu değildir. Win 8 için geliştirlen bir program, Win XP'de çalışmaz. Hatta Win XP SP1 için geliştirilmiş bir program, Win XP SP 2'ye yükseltildiğinde çalışmaz.

Windows XP'de derleğin bir program Ubuntu'da veya Windows Vista'da veya Windows 7'de çalışmaz. Çünkü o sistemde kullanılan .dll ve herhangi farklı dosyaların sürümleri, o sistemin o sürümü için geliştirilmişler.

Bildiğim bir örnek vereyim:
Basic ile bir Animasyon geliştirdim. Bu Animasyon sadece Yabasic 2.7xxx derleyicisi (yorumlayıcısı) ile çalışıyor. Farklı Basic yorumlayıcılarında veya Yabasic 2.9xxx sürümünde bir sürü hata verecektir. Animasyonu bir başka kişiye göndereceğim ve o kişi de Windows kullanıyor. Yabasic'in Windows ve Unix sürümleri var ve her iki sürüm de tamamen aynı çalışıyorlar. Benim Linux'ta yazdığım kodlar, Windows'tada aynı şekilde çalışacaklar. Ancak, Animasyon'umu alacak kişi bu uygulamayı çalıştırabilmek için, Yabasic'in Windows sürümünü indirmeli (veya ben script ile birlikte göndereceğim) Yabasic'in Windows sürümünü başka bir Linux sistemde Wine ile birlikte kurdum ve Animasyonu denedim ve çalıştı.

Daha önce de bir Animasyon hazırlayıp, göndermiştim. Ancak Chipmunk Basic kullanmıştım ve Chipmunk Basic'in Windows sürümünde ve Mac sürümünde bazı sisteme özel kod'lar mevcut ve Linux'ta yazdığım Animasyon'u, Windows için tekrar kısmen düzeltmem gerekti. Bir de alıcının Windows'u, (bu durumumda) 32bit olmak zorunda. Veya, diğer şahıs, 32 bit için gerekli kütüphaneleri kurabilecek kadar bilgili olmalı.

Şimdi benim yazdığım Animasyon, Platform bağımsız bir Animasyon. Sadece, Windows için olan sürümünde, klasörün içine, yabasic yerine yabasic.exe dosyasını eklemiş oldum ve başlatıcının uzantısıda .sh değil, .bat olmuş oldu.

Programcılık sandığım kadar kolay değilmiş :)

heartsmagic

Alıntı yapılan: dert36 - 25 Ekim 2013 - 20:01:44
QT ile program yazmak ne kadar da karmaşıkmış. Araştırabileceğim fazla dökümanda yok. Büyük bir sır gibi. QT platformdan bağımsız değil miydi? neden skype'nin windows tarafı için farklı bir program kullanıyorlar ki ? QT windows tarafında hiç bir işe yaramıyor mu?

Yazmak karmaşık değildir düşündüğün kadar, kafanı lisans mı karıştırdı? Sonuçta bir programlama dili ve QT programlama çatısını, alt yapısını (artık yazılımcılar ne diyorsa) kullanıyorsun. Haliyle sıfırdan başlamak biraz gayret gerektirecektir. Sandığın kadar karmaşık veya zor olsaydı KDE gibi çok güzel bir masaüstü hâlâ yaşamını sürdürebilir miydi? Ortada büyük bir sır da yok bence, etrafta belge çoktur ama haliyle sayı itibarıyla İngilizce daha ağırlıklıdır. "QT ile programlama" dediğinde bile birçok Türkçe kaynak geliyor önümüze. Güncel olanı vardır, olmayanı vardır tabi.

Skype için "sanmıyorum" demiştim aslında. Eğer bilen biri varsa ve beni düzeltirse sevinirim. Bunu da olmayacağı için değil, onların tercih etmeyeceğini düşünerek söylemiştim, yanılıyor olabilirim elbette.

Ancak, şunu tekrar edeyim kullandığın kütüphane her ne kadar platform bağımsız da olsa haliyle uygulamanın çalışacağı yere onu bir şekilde taşıman lazım. Linux tarafında bu mesele bağımlılıklarla yapılıyor. Eğer depolarda olan bir kütüphane kullandıysan uygulamanda bunu bağımlılık olarak eklemen yeterli paketine. Skype bizim tarafta 16MB kadar ancak kurmaya kaltığında senden QT kütüphanelerini ister.

Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

dert36

Alıntı yapılan: heartsmagic - 26 Ekim 2013 - 15:18:22
Alıntı yapılan: dert36 - 25 Ekim 2013 - 20:01:44
QT ile program yazmak ne kadar da karmaşıkmış. Araştırabileceğim fazla dökümanda yok. Büyük bir sır gibi. QT platformdan bağımsız değil miydi? neden skype'nin windows tarafı için farklı bir program kullanıyorlar ki ? QT windows tarafında hiç bir işe yaramıyor mu?

Yazmak karmaşık değildir düşündüğün kadar, kafanı lisans mı karıştırdı? Sonuçta bir programlama dili ve QT programlama çatısını, alt yapısını (artık yazılımcılar ne diyorsa) kullanıyorsun. Haliyle sıfırdan başlamak biraz gayret gerektirecektir. Sandığın kadar karmaşık veya zor olsaydı KDE gibi çok güzel bir masaüstü hâlâ yaşamını sürdürebilir miydi? Ortada büyük bir sır da yok bence, etrafta belge çoktur ama haliyle sayı itibarıyla İngilizce daha ağırlıklıdır. "QT ile programlama" dediğinde bile birçok Türkçe kaynak geliyor önümüze. Güncel olanı vardır, olmayanı vardır tabi.

Skype için "sanmıyorum" demiştim aslında. Eğer bilen biri varsa ve beni düzeltirse sevinirim. Bunu da olmayacağı için değil, onların tercih etmeyeceğini düşünerek söylemiştim, yanılıyor olabilirim elbette.

Ancak, şunu tekrar edeyim kullandığın kütüphane her ne kadar platform bağımsız da olsa haliyle uygulamanın çalışacağı yere onu bir şekilde taşıman lazım. Linux tarafında bu mesele bağımlılıklarla yapılıyor. Eğer depolarda olan bir kütüphane kullandıysan uygulamanda bunu bağımlılık olarak eklemen yeterli paketine. Skype bizim tarafta 16MB kadar ancak kurmaya kaltığında senden QT kütüphanelerini ister.

Haklısınız. Teşekkür ederim :)