Vala ile paylaşılan kütüphane oluşturma
Bu derste Vala programlama dili ile nasıl müşterek, ortak kütüphane oluşturabileceğimizi anlatmaya çalışacağız.
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.
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.
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