Vala ile müşterek ortak kütüphane oluşturma

Vala ile paylaşılan kütüphane oluşturma

Giriş

Bu derste Vala programlama dili ile nasıl müşterek, ortak kütüphane oluşturabileceğimizi anlatmaya çalışacağız.

Müşterek, ortak kütüphane nedir?

Bunu bir misal üzerinden giderek izah etmeye çalışalım.

Matematiği zayıf birisi olsun.

Bazı hesaplamalar yapmak istiyor. Ama matematiği zayıf olduğu için kütüphaneciyi buluyor. Ve ona diyor ki :

-Altı kere altı kaç eder?

Ya da elindeki kağıdı uzatıyor. Hesaplamaları yapmasını rica ediyor.

Eğer bu kişi kütüphaneciyi bulamazsa hesap da yapamayacaktır.

Geliştirdiğimiz uygulamalarda da benzer bir durum vardır.

Örneğin bir hesap uygulaması yazıyoruz. Ama uygulamamızın derleme zamanında bu matematiksel işlemlerle ilgili hiç bilgisi yok.

Ancak çalışma zamanında bir kütüphaneden bu bilgileri istiyorsa bu tür kütüphanelere müşterek, ortak kütüphane ismi veriliyor.

Vala ile müşterek, ortak kütüphane

Aşağıdaki kütüğü matematik.vala ismi ile kaydediniz.

namespace Matematik
{
    public int topla(int ilk, int ikinci)
    {
        return (ilk + ikinci);
    }

    public int karesi (int sayi)
    {
        return (sayi * sayi);
    }
}

Kütüğü müşterek kütüphane olarak derlemek için aşağıdaki komutu veriniz.

valac --library=matematik -H matematik.h matematik.vala -X -fPIC -X -shared -o matematik.so

Derleme sonrası matematik.so kütüğünün yanında matematik.vapi ve matematik.h kütükleri oluştu.

Ortak kütüphaneyi kullanan ufak bir uygulama

Aşağıdaki kütüğü hesap.vala ismi ile kaydediniz.

using Matematik;

int main()
{
    stdout.printf("Kütüphaneciden bilgileri istiyorum\n");
    stdout.printf("2 + 3 eşittir %d\n", topla(2, 3));
    stdout.printf("Altı kere altı %d\n", karesi(6));
    return 0;
}

Uygulamayı derlemek için aşağıdaki komutu kullanıyoruz.

valac matematik.vapi hesap.vala -X matematik.so -X -I. -o hesap

Bu aşamada uygulamayı çalıştırmaya çalışırsak hata verecektir.

Çünkü Linux ortamında müşterek kütüphaneler /lib ya da /usr/lib dizininde tutuluyor.

Geçici olarak

export LD_LIBRARY_PATH=.

uygulamayı çalıştırabiliriz.

Daha iyisi kendi ürettiğimiz kütüphaneler için bir dizin oluşturabiliriz.

 mkdir ~/kütüphane/

Daha sonra kullanıcı tanımlı kütüphane dizinini tanıtmak için eğer fish kabuğu kullanıyorsanız ~/.config/fish/config.fish kütüğüne eğer bash kullanıyorsanız ~/.bashrc kütüğüne aşağıdaki gibi bir satır ekleyiniz.

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/kütüphane"

Artık ./hesap yazarak uygulamayı çalıştırabiliriz.

Kütüphaneciden bilgileri istiyorum
2 + 3 eşittir 5
Altı kere altı 36

Yorumlar

yorum yaz

Yorum yaz

Henüz yorum yok.