Ubuntu kütüphane dosyalarını nerede saklıyor?


18

C derlemesinde kullanmak için kendi kütüphanemi eklemek istiyorum, ancak ubuntu'nun nerede sakladığını bilmiyorum.


5
/ Usr / lib & / usr / include
karthick87 15:10

benim kütüphane / usr / dahil nasıl buldum onları koyarak ile gitmek gerekir? Ben sadece bir başlık dosyası ve ac dosya yanında koymak gerekir veya ben bir .h dosyasında üstbilgi ve işlevi birlikte yazmak gerekir?
david25

3
Kütüphaneler ve başlıklar farklı şeylerdir, / usr / include kütüphaneleri İÇERMEZ, kütüphanelerde bulunan fonksiyonların / nesnelerin tanımları olan üstbilgileri içerir. Soru geliştirilmelidir, neyi başarmaya çalıştığınızı anlamak zor.
João Pinto

Yanıtlar:


11

Sorunuza yaptığınız yorumlara dayanarak, gerçekten sorduğunuz şey "Yazdığım özel bir kütüphaneyi nasıl kurabilirim ve nereye koyayım?"

Genel olarak, makinedeki kullanıcılara yerel olarak oluşturulan şeyler / usr / local ağacına konur. Başlık dosyası / usr / local / include dizinine gitmelidir. Derlenen kütüphane / usr / local / lib dizinine gitmelidir. .C dosyası kitaplığın bir parçası değildir, kaynağın bir parçasıdır ve son kullanıcının kullanımı için normalde yüklenmemiş bir şey değildir. Dosyaları bu konumlardan birine yerleştirmek için root erişimine ihtiyacınız olacaktır.

Kitaplığı oluşturmak için, önce statik mi yoksa dinamik (paylaşılan) kitaplık mı istediğinize karar vermeniz gerekir. Paylaşılan kitaplık oluşturma hakkında daha fazla bilgiyi http://www.linux.org/docs/ldp/howto/Program-Library-HOWTO/shared-libraries.html adresinde 3.4, Paylaşılan Kitaplık Oluşturma bölümünde bulabilirsiniz . (Ayrıca nereye koyacakları konusunda tavsiyeleri var - çoğu geliştirici bir fikir veya üç olacak :-))


11

Kütüphaneye bağlı olarak, ubuntu kütüphanelerini çoğunlukla üç yerde saklar

  1. / lib
  2. / Usr / lib
  3. / Usr / local / lib

Dosya Sistemi Hiyerarşi Standardından

/ lib

/ Lib dizini, sistemi önyüklemek ve kök dosya sistemindeki komutları çalıştırmak için gereken paylaşılan kütüphane görüntülerini içerir. / bin ve / sbin'deki ikili dosyalar tarafından.

/ Usr / lib

/ usr / lib, doğrudan kullanıcılar veya kabuk komut dosyaları tarafından yürütülmesi amaçlanmayan nesne dosyalarını, kitaplıkları ve iç ikili dosyaları içerir. [22]

Uygulamalar / usr / lib altında tek bir alt dizin kullanabilir. Bir uygulama bir alt dizin kullanıyorsa, yalnızca uygulama tarafından kullanılan mimariye bağımlı tüm veriler bu alt dizine yerleştirilmelidir.

/ usr / local / lib yerel kütüphaneler içerir, yani bu sisteme özel bir kütüphane ama FHS'de / usr / local / lib için referanslar bulamıyorum, sadece / usr / local için açıklama içeriyor.



0

Derleyiciye kitaplığınızı nerede bulabileceğini söylemelisiniz. Kütüphanenizin yolunun "/path/to/lib/libfoo.a" olduğu varsayılırsa, programınızı "hello.c" derleyip bu şekilde bağlayabilirsiniz:

gcc -L/path/to/lib -lfoo hello.c

Bu Ubuntu'ya özgü değil, aslında tanıdığım tüm C-derleyicileri bu bayrakları destekliyor.


-2

Ubuntu'da bulunurlar /usr/include.


1
Başlık dosyaları var/usr/include. Bir kütüphane için gerçek ikili dosyalar orada saklanmaz. Üstbilgiler bir kitaplığın parçası olarak düşünülebilir, ancak ayrı olarak yüklenmesi gerekir vekitaplık kullanan programları derlemek için kullanılırlar. Kitaplık kullanan bir program derlendikten sonra artık başlık dosyalarına ihtiyaç duymaz veya kullanmaz.
Eliah Kagan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.