gcc
ve ld
, kütüphaneler için bir arama yolu belirlemenin birçok yolu sunar; bunlar arasında -rpath
ve -L
bayrakları bulunur. Man tabloları, bu iki bayrak arasında hiçbir fark olmadığını ortaya koymakta, her bir bayrak etkin bir şekilde kütüphane arama yoluna bir kitaplık eklediğini belirtmektedir. Yine de her iki bayrak da tam olarak aynı şeyi yapıyor garip görünüyor. Bu iki seçenek arasında var olan farklar nelerdir?-rpath ve -L arasındaki fark nedir?
cevap
Sen man sayfalarını bazı eski kopyaları okuma olmalıdır (vurgu eklenmiştir):
-rpath = dir
çalışma zamanı kütüphane arama yoluna bir dizin ekleyin. Bu, bir ELF yürütülebilir dosyasını paylaşılan nesnelerle ilişkilendirirken
kullanılır. Tüm
zamanında paylaşılan nesneleri bulmak için kullanır ki,
argümanlar birleştirilmiş ve zamanı bağlayıcı geçirilir -rpath.
vs
-L searchdir
--library yollu = searchdir
ld arayacaktır Yolların listesine yolu searchdir ekle
arşiv kütüphaneleri ve ld denetim komut dosyaları.
Yani, -L
bağlarken karşı bağlamak için kütüphanelere aramaya ld
söyler. Bunu (örneğin), yapı ağacınızdaki kütüphanelere karşı oluştururken kullanırsınız; bu, make install
tarafından normal sistem kitaplığı yollarına yerleştirilir. Diğer yandan, --rpath
, yürütülebilir dosyanın içinde bu yolu depolar, böylece çalışma zamanı dinamik bağlayıcısı kitaplıkları bulabilir. Kitaplıklarınız sistem kitaplığı arama yolunun dışında olduğunda bunu kullanırsınız.
Notlar: 1. Birinin ihtiyaç duyduğu çoğu zaman -rpath =/some/weird/path', birinin de '-L/some/weird/path' olması gerekir. 2. '' gcc' ile kullanım gerekir '-Wl, -rpath = dir'. –
Hala neden ikisine ihtiyaç olduğunu anlamıyorum. Benimle aynı tecrübeye sahibim. Yukarıdaki. Kütüphaneden yapım aşamasında hangi bilgilere ihtiyaç var? Sebep olası h-dosyaları dışında. Ama sanırım başka bir şey ... –
@FredrikJohansson Yeni bir soru için mantıklı bir konu olabilir (elbette, daha önce sorulmamış olduğunu varsayarak). En azından mevcut sembollere ihtiyaç var ama muhtemelen başka şeyler de var. – derobert
- 1. Python'da {} ve [] arasındaki fark nedir?
- 2. UNIX'teki $ @ ve $ * arasındaki fark nedir?
- 3. $ arasındaki fark nedir? ve PowerShell
- 4. Fark() arasındaki fark nedir mustache.js
- 5. arasındaki fark nedir?
- 6. Java arasındaki fark nedir
- 7. arasındaki fark nedir?
- 8. arasındaki fark nedir?
- 9. Lua C API: lua_gettop() ve -1 arasındaki fark nedir?
- 10. GeometryDrawing'de M ve L nedir?
- 11. app.doScript ve $ .evalFile arasındaki fark nedir?
- 12. gVim ve gVim arasındaki fark nedir?
- 13. isAlpha ve isLetter arasındaki fark nedir?
- 14. Control.Enter ve Control.GotFocus olayları arasındaki fark nedir?
- 15. .got ve .got.plt bölümü arasındaki fark nedir?
- 16. AutomationProperties.AutomationID ve AutomationProperties.Name arasındaki fark nedir?
- 17. Android'de getDir ve getFilesDir arasındaki fark nedir?
- 18. R içinde `=` ve `<-` arasındaki fark nedir?
- 19. uint ve System.UInt32 arasındaki fark nedir?
- 20. PropertyChangeListener ve VetoableChangeListener arasındaki fark nedir?
- 21. XSS'de IDREF ve IDREFS arasındaki fark nedir?
- 22. Cacerts ve keystore arasındaki fark nedir?
- 23. GPLv2 ve GPLv3 arasındaki fark nedir?
- 24. VarIsEmpty ve VarIsEmptyParam işlevleri arasındaki fark nedir
- 25. ActiveSupport'ta mattr_accessor ve cattr_accessor arasındaki fark nedir?
- 26. Hashtable ve Dictionary arasındaki fark nedir?
- 27. RoutedCommand ve RoutedUICommand arasındaki fark nedir?
- 28. MySQL'deki boolean ve bool arasındaki fark nedir?
- 29. Task.Factory.FromAsync ve BeginX/EndX arasındaki fark nedir?
- 30. WideChar ve AnsiChar arasındaki fark nedir?
Belki de -rpath-link'i mi düşünüyorsunuz? – ams