Boost kitaplığı nasıl oluşturulur?

boost.png
boost.png
Boost kitaplığı nedir?

Boost kitaplığı, çoğu popüler yazılımlar tarafından da kullanılan; dosya sistemi, lineer cebir, çoklu threading ve benzeri işlemlerin bir arada buluştuğu çok büyük ve önemli bir kitaplıktır. Çoğu önemli yazılım, bu kitaplıktan fazlasıyla yararlanmaktadır. Örneğin: Adobe Illustrator, McAfee AntiVirus vb.


Kitaplık oluşturma nedir?
Kitaplık oluşturma (daha doğrusu "building libraries"), kitaplıkların kullanılabilir hale getirilmesidir. Peki bunu neden yapıyoruz?
Bazı kitaplıklarda yapmamıza gerek yok, Boost gibi. Ama filesystem gibi önemli modüllerde build yapılması gerekiyor. Ama genelde Boost kitaplığı, sadece header dosyalarından oluşur.
(Header dosyası: C++ kaynak dosyasında kullanılan referans, define, pointer ve sınıfların bulunduğu yer).



Boost kitaplığının indirilmesi
Kitaplığın indirilmesi için öncelikle boost.org sitesine gidiyoruz. (Boost.org, Boost kitaplığı geliştiricileridir.)

SharedScreenshot.jpg


Kitaplığın "Downloads" kısmından en son versiyonunu seçiyoruz. (Version 1.81.0)

SharedScreenshot2.jpg


İstediğiniz şekilde indirebilirsiniz, ancak Windows kısmından olduğundan emin olun. Unix yani macOS benzeri işletim sistemi
kullanıyorsanız, Unix kısmından indirebilirsiniz.

SharedScreenshot3.jpg


Kitaplığı indirdikten sonra bu şekilde görünecektir.

SharedScreenshot4.jpg


Kitaplığımızı çıkarmak için "Klasöre ayıkla" tuşuna basıyoruz. Eğer WinRAR kullanmıyorsanız, dosyayı dışarı almanız yeterli.
Dosya biraz büyük bu yüzden beklemekte fayda var.

SharedScreenshot5.jpg


Kitaplık çıkarıldığı zaman bu şekilde görünmeli.

Kitaplığın oluşturulması

Oluşturmaya başlamadan önce sisteminizde cl.exe yani Microsoft Visual C++ derleyicisinin yüklü olduğundan emin olun.

Şimdi sıra kitaplığı oluşturmakta. İki türlü yapabiliriz, statik ve dinamik.
  • Statik olarak oluşturduğumuz zaman kitaplık programımızın içine yüklenir.
  • Dinamik olarak oluşturduğumuz zaman kitaplık programın dışına derlenir. (Windows'ta *.dll olarak, Linux ve Unix'de *.so olarak)
Statik derleme

SharedScreenshot7.png


Komut istemi açıp indirdiğiniz ve çıkarttığınız Boost klasörüne gelin ve bootstrap.bat komutunu çalıştırın.

SharedScreenshot6.jpg


Aldığınız sonuç bu olmalı.

Oluşan b2 (*.exe) nedir?
Bu program, Boost'u derlemenizi sağlayan programdır. Boost.Build olarak da geçer.

SharedScreenshot8.jpg


b2 --help komutunu girdiğiniz zaman kullanabileceğiniz parametreler karşınıza çıkmaktadır.

SharedScreenshot9.jpg


Bu komut sonucu gördüğünüz bu menüyü aklınızda tutun, dinamik derlemede bu menü yardımcı olacak.

SharedScreenshot10.jpg


Şimdi b2 yazarak statik derlemeyi başlatın.

Başlattığınız zaman böyle yazılar görmeye başlayacaksınız, şimdi bekleyin.
Bu süreç şu an sisteminize ve sisteminizdeki var olan kitaplıklara göre kendisini konfigüre ediyor.

SharedScreenshot11.jpg


Bu yazılar da building yani oluşturmanın başladığını belirtir. Bu aşamada hiçbir şeye basmayın.
Oluşturma yapılırken işlemcinizden fazlasıyla güç tüketileceğini de belirtmek isterim.
Bu süreç uzun sürecektir.

SharedScreenshot12.jpg


Bu süreç sonunda da kitaplığınız, "successfully built" yazısıyla birlikte başarılı bir şekilde hazırlandı.
Buradaki iki mesaj çok önemli.

Çeviri:
Derleyiciye bu dizini aktarın:
"boost dizininiz"
Kitaplık bağlayıcıya bu dizini aktarın:
"boost dizininiz\stage\lib"

Eğer yazılımınızda Boost kitaplığını kullanmak istiyorsanız, IDE'nizin derleyicisine Boost kitaplığının include ve *.lib yani kitaplık dosyalarını tanıtmanız gerekiyor.

Daha fazla bilgi;
Include ve Header dosyaları: #include yönergesi (C/C++) & Üst bilgi dosyaları (C++)
*.lib (kitaplık) dosyaları: İzlenecek yol: Statik kitaplık oluşturma ve kullanma (C++)


SharedScreenshot13.jpg


Gördüğünüz üzere artık "bin.v2" dosyamız var. Derlenen *.lib dosyalarımız artık burada.

SharedScreenshot14.jpg

"boost dizini"\bin.v2\libs\filesystem\build\msvc-14.3\release\link-static\threading-multi klasöründeki oluşan dosyalar.

Statik olarak oluşturduğumuz için lib dosyalarımız libboost ile başlıyor.

Dinamik derleme

SharedScreenshot9.jpg


b2 --help ile buradaki menüyü hatırlıyoruz. Buradaki link ve variant parameterlerini kullanıyoruz.

link=static | shared
  • static: Statik olarak derler statik olarak derlemek için bu parametrelere gerek yok.
  • shared: Dinamik olarak derleme yapar, ve *.dll dosyaları oluşturur.
variant=debug | release
  • debug: Programı hata ayıklama yaparken kullandığımız kitaplık türüdür. Hem release, hem de debug varyantlarıyla derleme yapmanız önerilir.
  • release: Programın tamamlanmış haline bağlanan türdür. Programınızı yayınlarken bu *.dll türü ile yayınlamalısınız.
SharedScreenshot15.jpg


b2 link=shared variant=debug kodu ile derlemeyi başlatıyoruz.
Aynı şekilde bu süreç de uzun süreceğinden hiçbir şeye basmıyoruz.

SharedScreenshot12.jpg


Dinamik derleme ile de aynı sonucu alıyoruz.

SharedScreenshot16.jpg


Şimdi b2 link=shared variant=release ile de release varyantı için derlemeyi başlatıyoruz.
Bu süreç için de bekliyoruz.

SharedScreenshot12.jpg


Sonucumuz yine aynı şekilde.

SharedScreenshot17.jpg

"boost dizini"\boost_1_81_0\bin.v2\libs\filesystem\build\msvc-14.3\release\threading-multi klasöründeki oluşan dosyalar.

Dinamik olarak derlediğimiz zaman da bu dosyalar karşılıyor bizi.
boost_filesystem-vc143-mt-x64-1_81.dll dosyasını da yayınlayacağınız program ile birlikte aynı klasöre koymanız gerekiyor.
(eğer programınız boost filesystem modülünü kullanıyorsa)


Kitaplığın kullanımı

İlk başta kullanımını öğrenmek zor olabilir, bu yüzden küçük bir örnek ile sizin karşınızdayım.

Kitaplığı bağlama

Kitaplığı statik ya da dinamik olarak bağlamak, aynı şekilde yapılabiliyor. Sadece kitaplık türüne dikkat etmek yeterli (*.lib).

SharedScreenshot18.jpg


Visual Studio 2022 kullanarak bir konsol programı oluşturduktan sonra, menülerden "Proje > Proje Özellikleri" sekmesine giriyoruz.

SharedScreenshot19.jpg


Özellik Sayfaları sekmesine girdiğimiz zaman bizi yandaki C/C++ ve Bağlayıcı menüleri karşılıyor.

SharedScreenshot20.jpg


"Ek İçeren Dizinler" menüsüne tıkladığımız zaman bizi bu kutu karşılıyor.

SharedScreenshot21.jpg


Sarı klasör gibi görünen ikona bastıktan sonra, b2 programının söylediği konumu ekliyoruz ve Tamam diyoruz.

SharedScreenshot22.jpg


Daha sonra Bağlayıcı ve Genel'e geliyoruz. Buradaki Ek Kitaplık Dizinleri'ne tıklıyoruz.

Dinamik olarak bu şekilde;

SharedScreenshot23.jpg


Statik olarak da bu şekilde bağlıyoruz;

SharedScreenshot24.jpg



Örnek program ile deneme

Aşağıdaki bu "boost.org" tarafından sağlanan örnek program sayesinde bağlantımızın doğru olup olmadığını kontrol edebiliriz.
Bu programın amacı, argument ile belirtilen dosyanın boyutunu sorgulamaktır.

C++:
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;

int main(int argc, char* argv[])
{
  if (argc < 2)
  {
    std::cout << "Usage: tut1 path\n";
    return 1;
  }
  std::cout << argv[1] << " " << file_size(argv[1]) << '\n';
  return 0;
}

Statik bağlantı ile deneme

SharedScreenshot25.jpg


Görmüş olduğunuz gibi statik bağlantı ile derlediğimiz deneme programımız başarıyla sonuçlandı.
Örnek olarak ClickMonitorDDC'nin boyutuna baktık, ve dir komutu ile de doğruladık.

Önemli not: Derlediğim programın C'de olmasının sebebi, kullanıcı adımın gözükmemesidir.
Sizin projeniz C:\Users\"kullanıcı"\source\repos\BoostProject\x64\Debug dizininde bulunur.


Dinamik bağlantı ile deneme

SharedScreenshot23.jpg


Dinamik olarak bağlantımızı bu şekilde öncelikle yapıyoruz. (dizinde "link-static" bulunmamalı)

SharedScreenshot26.jpg


Proje özelliklerine geri döndüğümüz zaman C/C++ > Ön İşlemci ve Ön İşlemci Tanımları'na geliyoruz.

SharedScreenshot27.jpg


Dinamik olarak bağlantının sağlanması için derleyiciye talimat vermemiz gerekiyor, o talimat da burada belirtildiği gibidir: BOOST_ALL_DYN_LINK

SharedScreenshot28.jpg


Eğer bu hatayı alıyorsanız, dinamik bağlantı sağlanmış demektir. Bu hayatı almanızın sebebi, projenizin bulunduğu klasörde belirtilen *.dll dosyasının bulunmamasıdır.

SharedScreenshot29.jpg


Proje dizininize kullandığınız modülün bulunduğu dizinden, modülün dll dosyasını projenizin bulunduğu dizine kopyalayın.
Sonra programınız çalışacaktır.

Okuduğunuz için teşekkür ederim.

Yorumlar

Gösterilecek yorum bulunamadı.

Blog girdisi detayları

Ekleyen
246675
Okuma süresi
4 dakika okuma
Görüntüleme
373
Son güncelleme
Yazar değerlendirmesi
5,00 yıldız

Yazılım kategorisindeki diğer girdiler

Bu girdiyi paylaş

Geri
Yukarı