2016-04-13 15 views
0

Bu, farklı sistemlerde bir Qt Uygulaması çalışması yapmayla ilgili ilk denememdir.Statik olarak bağlanmış Qt uygulamasının geriye dönük uyumluluğunun dağıtımı

Statik bağlantı yöntemi seçtiniz. Qt 5.5'in kaynaklarını derledim ve uygulamamı statik Qt ile derledim. Yürütülebilir bilgisayarımda iyi çalışıyor. İşletim sistemim Ubuntu 15.04. Ama aynı çalıştırmayı Ubuntu 14.04'te çalıştırmayı denediğimde sorun yaşadım. Hata mesajının önemli detayları aşağıda verilmiştir.

libstdC++. So.6 cxxabi_1.3.8

bulunamadı ben standart bir Google arama yaptı ve benim makinede, ben yaratmıştı makinede bunun daha yeni bir sürümü vardı çünkü olduğunu fark etti yürütülebilir. Bu sorunu çözmek için çok farklı yaklaşımlar vardı. Gördüğüm çözümlerden biri, kendi kopyası olan libstdc++.so'u yürütülebilir dosya ile göndermektir. Ancak .so dosyasını bir kalem sürücüsüne kopyalamaya çalıştığımda, dosya sisteminin bu dosyaları desteklemediğini belirten bir uyarı vardı.

Sorum sorum, ne yapıyorum? Ayrıca, çalıştırılabilir Ubuntu 10.04 hedefini yapmak istiyorsam, geriye dönük uyumluluk sorunlarını ele alan doğru prosedür ne olurdu. Bir yöntemin, makinemde aynı işletim sistemini kurmak ve daha sonra yürütülebilir dosyayı oluşturmak olduğunu biliyordum, başka bir yol var mı?

cevap

0

libstd ++, geriye dönük uyumludur, ancak ileriye dönük olarak uyumlu değildir; bu, libstdC++ 'nin daha yeni bir sürümüyle bir programı çalıştırabileceğiniz ancak tersini değil de çalıştırdığınız anlamına gelir. Bu yaşadığın şey.

Bu sorunla başa çıkmanın bir yolu, eski OS sürümlerini yapı makinesi olarak kullanmaktır. Örneğin, Ubuntu 14.04 LTS'yi kullandığınızda, this list of compatible target systems'u alırsınız.

Kullandığınız derleme sistemi, muhtemelen kullanılabilir derleyicileri sınırlayacaktır. Ubuntu 14.04'te, C++ 11'in çoğu için iyi olan GCC 4.8'e sahip olursunuz ve size C++ 14 desteği sunacak şekilde, clang 3.6 için paketler mevcuttur. Bir taş devresi derleyicisi kullanmak istemiyorsanız, Ubuntu 10.04'ü hedeflemek zor olacaktır.

LibcdC++ nakliye fikri, libc ile aynı sorunla karşılaşacağınız için size fazla yardımcı olmayacaktır.

+0

Cevabınız için teşekkürler, ancak eski Ubuntu sürümlerini hedeflemek için qt uygulamalarını kullanan şirketlerin kullandığı herhangi bir standart eski işletim sistemi var, bu benim büyük şüphemdi –

+0

Hangi uyumluluk gerekiyor? Hangi derleyiciye ihtiyacınız var? Uygulamanızda hangi C++ standardı kullanıyorsunuz? Bu çok özel bir soru. Tüm tipik Linux dağıtımlarının paketlerini kaynak kodundan derlemek için yapıldığı göz önüne alındığında, bu sorunun genel bir cevabı yoktur. Linux, özel yazılımlar için optimize edilmemiştir. –

+0

Ubuntu 10.04'ten, C++ standart gnu ++ 98'den, uyumsuzluğundan dolayı uyumluluk isterdim, ama daha önce bunun hakkında genel bir yol olacağını düşündüm. –

İlgili konular