pkg-config
pkg-config, uygulamaları ve kütüphaneleri derlerken kullanılabilecek yardımcı bir araçtır. Sistemde kurulu olan kütüphaneleri sorgulamak için birleşik bir arayüz tanımlar.
Programcıların ve kurulum betiklerinin, kütüphane dosyalarının isimleri ve konumları gibi ayrıntılı bilgilere sahip olmadan da çalışmasını sağlar. Özellikle ilk defa karşılaşılan kütüphaneleri kullanan uygulamaları derlerken işleri kolaylaştırır.
pkg-config aslen Linux için tasarlanmış olsa da artık çeşitli BSD dağıtımları, Microsoft Windows, macOS ve Solaris gibi işletim sistemleri için de mevcuttur.
İlk gerçeklemesi James Henstridge tarafından kabuk betiği olarak yazılan, daha sonraysa Havoc Pennington tarafından GLib kütüphanesi kullanılarak C'de yeniden yazılan pkg-config, kütüphaneler hakkında aşağıda bazı örnekleri görülebilecek çeşitli bilgiler verir:
Bu dosyanın birkaç girdisi vardır. Bu girdiler genellikle paketi kullanan programların da derlemesi için gereken bağımlı kütüphanelerin bir listesini içerir. Girdiler ayrıca genellikle başlık dosyalarının konumunu, sürüm bilgisini ve çeşitli açıklamaları da içerir.
Aşağıda Fedora'da /usr/lib64/pkgconfig/ dizininde bulunan çeşitli .pc dosyalarının içeriği görülebilir:
libpng:
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include/libpng16
Name: libpng
Description: Loads and saves PNG files
Version: 1.6.36
Requires: zlib
Libs: -L${libdir} -lpng16
Libs.private: -lm -lz -lm
Cflags: -I${includedir}
OpenCV:
# Package Information for pkg-config
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.4
Libs: -L${exec_prefix}/lib64 -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_viz -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_video -lopencv_plot -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lpthread -lrt -L/lib64 -lOpenGL -lGLX -lGLU -lClpSolver -lClp -lCoinUtils -lbz2 -lz -lm
Cflags: -I${includedir_old} -I${includedir_new}
İlk dosyada, libpng'nin kütüphanelerinin /usr/lib64 dizininde ve başlık dosyalarının da /usr/include/libpng16 dizininde bulunabileceği, kütüphane adının libpng olduğu ve sürümünün 1.6.36 olduğu bildirilmiştir. Ayrıca, bu kütüphaneyi kullanan kodları derlemek için gereken ek bağlayıcı seçenekleri de verilmiştir.
Derleme sırasında pkg-config'in kullanımına ilişkin birkaç örnek de aşağıda gösterilmiştir:
$ gcc -o test test.c $(pkg-config --libs --cflags libpng)
$ gcc -o test test.c `pkg-config --libs --cflags glib-2.0`
$ g++ image-sim.cpp `pkg-config --libs opencv`
Modern bilgisayar sistemleri, kullanıcıya uygulamalar sunmak için birçok katmanlı bileşen kullanır. Bu parçaları birleştirmedeki zorluklardan biri, onları uygun şekilde entegre etmektir. pkg-config sistemde kurulu kütüphaneler hakkındaki meta verileri toplar ve kolayca kullanabilmesi için kullanıcıya sunar.
pkg-config gibi bir meta veri sistemi olmadan bir bilgisayardaki servisler hakkında bilgileri bulmak ve bunları almak çok zor olabilir. Bir geliştiricinin kütüphane paketiyle birlikte pkg-config dosyaları sunması kütüphane UPA'sının benimsenmesini büyük ölçüde kolaylaştırır.
Programcıların ve kurulum betiklerinin, kütüphane dosyalarının isimleri ve konumları gibi ayrıntılı bilgilere sahip olmadan da çalışmasını sağlar. Özellikle ilk defa karşılaşılan kütüphaneleri kullanan uygulamaları derlerken işleri kolaylaştırır.
pkg-config aslen Linux için tasarlanmış olsa da artık çeşitli BSD dağıtımları, Microsoft Windows, macOS ve Solaris gibi işletim sistemleri için de mevcuttur.
İlk gerçeklemesi James Henstridge tarafından kabuk betiği olarak yazılan, daha sonraysa Havoc Pennington tarafından GLib kütüphanesi kullanılarak C'de yeniden yazılan pkg-config, kütüphaneler hakkında aşağıda bazı örnekleri görülebilecek çeşitli bilgiler verir:
- C veya C++ derleyicisi için parametreler
- Bağlayıcı için parametreler
- Söz konusu paketin sürümü
Bu dosyanın birkaç girdisi vardır. Bu girdiler genellikle paketi kullanan programların da derlemesi için gereken bağımlı kütüphanelerin bir listesini içerir. Girdiler ayrıca genellikle başlık dosyalarının konumunu, sürüm bilgisini ve çeşitli açıklamaları da içerir.
Aşağıda Fedora'da /usr/lib64/pkgconfig/ dizininde bulunan çeşitli .pc dosyalarının içeriği görülebilir:
libpng:
prefix=/usr
exec_prefix=/usr
libdir=/usr/lib64
includedir=/usr/include/libpng16
Name: libpng
Description: Loads and saves PNG files
Version: 1.6.36
Requires: zlib
Libs: -L${libdir} -lpng16
Libs.private: -lm -lz -lm
Cflags: -I${includedir}
OpenCV:
# Package Information for pkg-config
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.4
Libs: -L${exec_prefix}/lib64 -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_cvv -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_viz -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_video -lopencv_plot -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lpthread -lrt -L/lib64 -lOpenGL -lGLX -lGLU -lClpSolver -lClp -lCoinUtils -lbz2 -lz -lm
Cflags: -I${includedir_old} -I${includedir_new}
İlk dosyada, libpng'nin kütüphanelerinin /usr/lib64 dizininde ve başlık dosyalarının da /usr/include/libpng16 dizininde bulunabileceği, kütüphane adının libpng olduğu ve sürümünün 1.6.36 olduğu bildirilmiştir. Ayrıca, bu kütüphaneyi kullanan kodları derlemek için gereken ek bağlayıcı seçenekleri de verilmiştir.
Derleme sırasında pkg-config'in kullanımına ilişkin birkaç örnek de aşağıda gösterilmiştir:
$ gcc -o test test.c $(pkg-config --libs --cflags libpng)
$ gcc -o test test.c `pkg-config --libs --cflags glib-2.0`
$ g++ image-sim.cpp `pkg-config --libs opencv`
Modern bilgisayar sistemleri, kullanıcıya uygulamalar sunmak için birçok katmanlı bileşen kullanır. Bu parçaları birleştirmedeki zorluklardan biri, onları uygun şekilde entegre etmektir. pkg-config sistemde kurulu kütüphaneler hakkındaki meta verileri toplar ve kolayca kullanabilmesi için kullanıcıya sunar.
pkg-config gibi bir meta veri sistemi olmadan bir bilgisayardaki servisler hakkında bilgileri bulmak ve bunları almak çok zor olabilir. Bir geliştiricinin kütüphane paketiyle birlikte pkg-config dosyaları sunması kütüphane UPA'sının benimsenmesini büyük ölçüde kolaylaştırır.
Yorumlar
Yorum Gönder
sen de yaz yaz yaz buraya yaz bütün sözlerini