[Çözüldü] Qt uygulamasını başka bir Linux üzerinde derlemeden nasıl çalıştırabilirim?

Başlatan iskenderoguz, 09 Temmuz 2013 - 10:15:11

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

iskenderoguz

Windows üzerinde Qt ile yaptığım bir uygulamayı derledikten sonra oluşturulan exe dosyasını ve gerekli dll dosyalarını Qt yüklü olmayan başka bir Windows'a taşıdığım zaman çalıştırabiliyorum. Peki bunu Linux üzerinde nasıl yapacağım? Yani Qt yüklü bir Linux'te yazdığım ve derlediğim bir projeyi Qt yüklü olmayan bir Linux'te nasıl çalıştırabilirim?

freeman

Haliyle EXE dosyaları direkt olarak Linux üzerinde çalışmaz. Programı, Linux üzerinde yazıp, derleyip, daha sonra başkalarına dağıtmanız gerekiyor. Yani bir Linux dağıtımına sahip omalısınız.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

iskenderoguz

Bir yanlış anlama oldu sanırsam. Benim istediğim Windows üzerinde yapabildiğim işlemi Linux üzerinde nasıl yapabilceğimi öğrenebilmek. Zaten projeyi linux üzerinde kodyalıp, derleyip çalıştırıyorum. Bunda bir sıkıntım yok. Derleme sonucu ortaya çıkan çalıştırabilir dosyayı nasıl Qt yüklü olmayan başka Linuxlerde çalıştırırım? bunu soruyorum

ekremsenturk

Aynen Windows'ta olduğu gibi. Windows'ta .dll ve .exe dosyasından söz etmiştin. Linux'ta ise derlenmiş dosya ile birlikte, kullandığın Qt kütüphanesinide (.lib dosyası) birlikte, diğer Linux Bilgisayara aktarmalısın.

Derlenmiş dosyayı /usr/bin/ veya /usr/local/bin dizinine yerleşrirmelisin ve .lib dosyasınıda /usr/lib veya /usr/local/lib dizini içinde, kendi Bilgisayarındaki aynı alt klasörler yolunu ekleyerek, kayıt etmelisin.

Veya derlenmiş dosya ile .lib uzantılı dosya(lar) aynı klasör (veya alan) içinde bulunmalı.

(ilave olarak, bazı .so uzantılı dosyalarda kopyalaman gerekebilir)

iskenderoguz

Peki bunlar hangi dosyalardır? Bilgi verebilir misiniz?



Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 09 Temmuz 2013 - 17:35:30

Şimdi kodladığım uygulamanın build klasörünü diger linux'a attım. Ve terminalden çalıştırdım. Hata olarak
error while loading shared libraries: libqtgui.so.4 hatasını verdi.
Bende qt yüklü makineden libqtgui.so.4 dosyasını alıp diğer tarafa kopyaladım. (windows'ta da böyle yapıyordum)
Fakat aynı hatayı almaya devam ediyorum.

ekremsenturk

Linux'ta farklı masaüstü ortamları var. Windows'taki gibi sadece eski ve yeni sürüm farkı yok. Qt ile geliştirdiğin uygulamaları en kolay KDE masaüstüne aktarablirsin. Gnome veya Unity masaüstlerinde Qt kütüphaneleri ile geliştirilmiş uygulamalar çalıştırabilmek için düzinelerce bağımlılıklar gerekebiliyor. Bir örnek vereyim: Kturtle paketini kubuntu'da kurmak istediğinde sadece bir kaç yüz KB boyutu var. Ubuntu'da kurmak istediğinde 50 MB üstünde veri indirmek gerekiyor. Bunun nedeni KDE masaüstü Qt ile geliştirilmiş. Diğer masaüstület Gtk kütüphaneleri kullanıyor. Buraya kadar genel bilgi.

libqtgui.so.4 /usr/lib dizine kopyalamalısın.öyla olamasına rağmen hata alıyorsan, /usr/lib/qt4/plugins/designer klasörü içinde eksik olan dosyayı bulup eklemelisin. (Başka eksiklerde olabilir)

libqtgui.so.4 Qt 4 için bir dinamik kütüphane. Ancak bu kütüphane bir arayüz veya programında kullanıdığın .lib uzantılı kütüphaleri içermez, /usr/lib/ dizininde bulunması gereken Qt Modüllerine bağlantı kuran bir kütüphanedir. Aranan modül veya modülü içeren kütüphane bulunamadığından hata alıyorsun.

Linux dağıtımları farklıysa, yine dosyaların, klasörlerin adlarıda farklı olabilir. Bu tür detayların hepsine dikkat etmeli.

furkankalkan

tüm bağımlılkları görmek için ldd /nerede/bu/program komutunu kullanabilirsiniz fakat karşı tarafa kopyalamak için çok fazla dosya gerekir. (Ve bazılarını kopyalamak uyumluluk sorunlarına yol açar)
Siz en iyisi mi bağımlılıkları deb paketleri halinde kurun.
Lover
twitter.com/furkan_kalkan1

heartsmagic

Eğer bir zorunluluk yoksa bağımlılıkları kişinin kendisine bırakmak daha makuldür. Sadece uygulama için gerekli bağımlılıkların ne olduğu bilgisini eklersin bir yerlere. Böylece kuracak insan depolardan kurar bu bağımlılıkları. Linux tarafında genelde bağımlılıklar dahil edilmez bu şekilde. Hem sana hem de uygulamanı edinecek kişi için bir eksi durumdur bu. Sen daha fazla boyutta bir uygulama dağıtmak zorunda, indirecek kişide daha büyük boyutta bir uygulama indirmek zorunda kalacak. Hem belki senin dağıtacağın bağımlılıklar sisteminde mevcuttur? Hatta belki daha yenileri mevcuttur?

Zorunluluğun yoksa bağımlılıkları es geç bence.
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

cevaplar için teşekkür ederim. Sistem özel olarak hazırlanmış bir sistem ve sadece birkaç kişi kullanıyor. Bu nedenle deb ile uğraşmak istemedik. bağımlılıkları /lib klasörünün altına atınca sorun çözüldü.