C derlemesinde kullanmak için kendi kütüphanemi eklemek istiyorum, ancak ubuntu'nun nerede sakladığını bilmiyorum.
C derlemesinde kullanmak için kendi kütüphanemi eklemek istiyorum, ancak ubuntu'nun nerede sakladığını bilmiyorum.
Yanıtlar:
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 :-))
Kütüphaneye bağlı olarak, ubuntu kütüphanelerini çoğunlukla üç yerde saklar
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.
Ubuntu, Dosya Sistemi Hiyerarşi Standardını ( http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard ) takip eder, düzenli uygulama kitaplıkları / usr / lib altında saklanmalıdır.
Kütüphanelerin geliştirilmesi / yönetilmesinin önemsiz bir konu olmadığını, daha ayrıntılı belgeleri okumalısınız, burada güzel bir öğretici olduğunu unutmayın: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html
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.
Ubuntu'da bulunurlar /usr/include
.
/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.