2013-06-21 21 views
6

Kullandığım belirli bir araç zinciri ile çaprazlama yaparken rpath bağlantısının nasıl çalıştığını anladığım konusunda bir sorun yaşıyorum (bunun genel olarak çapraz derleme için geçerli genel bir soru olduğunu düşünüyorum). Ben kütüphaneler ve uygulamaları oluştururken derleyici ve bağlayıcı geçirilen hangi bayraklar bakmak zamanRpath-link çapraz derlemede nasıl kullanılır?

, I bağlayıcısı geçirilen aşağıdaki bkz:

-Wl,-rpath-link,/home/Dev/env/sys/crosscompiletoolchain/armle-v7/lib/ 

Yani bu bir yoldur paylaştı içine gömülmüş Geliştirme cihazımda hedef aygıt için oluşturulan kütüphaneler. Bu mantıklıdır çünkü cihaza kurulum yapmadan önce geliştirme makinesinde tüm son bağlantıyı yapıyorum. Sonunda cihaza dağıtdığımda (yani, paylaşılan libs + uygulaması), paylaşılmış lib'lerin işe yaramaz bir rpath bağlantısı bulunmayacak mı?

Oluşturulan kütüphaneler ve uygulamalar hedefe bağlı olarak iyi çalışıyor gibi görünüyor ve tahmin etmem gerekirse, uygulamanın aygıtın işletim sistemi tarafından sağlanan bir ortam olduğu için/lib/varsayılan kütüphane arama yolları (rpath-link sadece aranacak ilk direkler kümesini belirtir). Bu doğru mu?

cevap

12

Kontrol "LD kullanarak, GNU bağlayıcı - Seçenekler - GNU Projesi Arşivlerini" (ftp.gnu.org/pub/old-gnu/Manuals/ld-2.9.1/html_node/ld_3.html):

-rpath ve -rpath-link arasındaki fark -rpath seçenekleri ile belirtilen dizinleri dahil edilir ki çalıştırılabilir ve çalışma zamanında kullanılırken, -rpath-link seçeneği sadece bağlantı zamanında etkilidir.

İlgili konular