Linux'ta küçük bir Qt (C++) GUI uygulaması oluşturmaya çalışıyorum ancak bağlantı kurabilen Qt kitaplığı için eksik bağımlılıklar hakkında şikayette bulunarak sayısız bağlantı hatalarıyla yapılamıyor. Kütüphanelerin gerçekten orada olduğunu doğrulamak için Qt kütüphanelerinde ldd kullandım - ve onlar. Linking dependencies of a shared library Ve bu iş parçacığı benim hassas sorunları belirlemek yardım ederken, o dişin sonuca başvurum bağlamalıdır olmasıydı görünüyor:Paylaşılan kitaplığın bağımlılıkları otomatik olarak nasıl bağlanır
Benim sorunum bu thread tartışma ile alakalı gibi görünüyor!
uygulama şu komutla derlenmektedir:
g++ -m64 -Wl,-O1 -o Executable some-object.o some-other-object.o -lQtCore -lQtGui -lQtXml -L/usr/lib64 -L/usr/X11R6/lib64 -lpthread
bu aşağıdaki biçimde uyarılar üretir Koşu ve bağlama sonunda ('kayıp' kütüphanelerde belirlenen sembollere) tanımlanmamış referans hataları ile başarısız:
.../ld: warning: libglib-2.0.so.0, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libpng14.so.14, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libz.so.1, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
.../ld: warning: libfreetype.so.6, needed by /usr/lib64/libQtGui.so, not found (try using -rpath or -rpath-link)
vb (toplam bulunamadı 18 bağımlılıkları vardır.) Ben eğer alabilirim
bu derlemek için
Git ve açıkça -lglib, -lpng14, -lz -lfreetype ve benzeri ekledim, ama bahsettiğim gibi 18 bağımlılık var - ve bunu yapmamayı tercih ederim. Aynı zamanda yapmak zorunda olmamak gibi görünüyor.Aynı projeyi, aynı Linux Distro'yu (openSuse 12.2) kullanan herhangi bir sorun olmadan dizüstü bilgisayarımda derledim. Qt dahil tüm kütüphaneler dağıtım havuzlarından kuruldu.
Bu, openSuse kurulumumda bir tür kurulum sorunu olabileceğini düşünüyorum, ancak bunu düzeltmek için nereye bakacağım konusunda hiçbir fikrim yok.
Alkış, Craig
gibi bir şey yapabiliriz. Bir çeşit sistemin yanlış yapılandırılmasından şüphelenirim. Belki de derleyici ve binutils gibi araç zincirinin yeniden yüklenmesi yardımcı olabilir ...? –
Yast Kullanımı'nı kullanarak binutils'i kaldırdıktan sonra gcc araçlarını yeniden yükledim ve şimdi çalışıyor. Cevabın için teşekkürler. –