From: Recai Oktas (roktas@omu.edu.tr)
Date: Thu 04 Sep 2003 - 10:33:09 EDT
* Cem Ahmet MERCAN (HBM) <mercan@be.itu.edu.tr> [2003-09-04 09:08:35+0300]
>
> Evet editorler hususunda haklisiniz ama gcc konusunda benim kafami
> karistiran sey minimum c programinin bile bazi GPL kutuphaneleri
> kullaniyor olmasi. Mesala
Hayir onlar GPL degil, LGPL... Asagida acikladim.
> deneme.c:
> ---------------------------------
> int main(void){ return 0; }
> ---------------------------------
> seklinde olsun.
>
> Derlendikten sonra ldd ciktisi:
>
> $ ldd deneme
> libc.so.6 => /lib/libc.so.6 (0x4002f000)
> /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
>
> seklinde bazi kutuphaneler iceriyor.
> Benim programim bir urun ama hala bu kutuphanelere muhtac.
Bir onceki cevapta dustugum kayda dikkat ediniz. Her ne kadar standart
bir C kitapligi kullanmadan program yazmak pratik olarak mumkun olmasa
da, kendiniz basit birseyler kodlayarak hicbir harici kitapliga bagli
olmayan bir program yazmaniz her zaman mumkundur. Yani `gcc' kullanarak
derlediginiz bir program da one surulebilecek lisans kisitlari `gcc'nin
*kullanimindan* degil baglanan kitapliklardan kaynaklanir. Yukaridaki
ornekte "deneme" isimli program GNU'nun "Kisitli Genel Kamu Lisansi"
(LGPL) ile dagittigi libc6 kitapligi ile baglanmis (link). Dolayisiyla
lisans sartlariyla ilgili arastirmayi LGPL uzerinde yapacaksiniz.
Buyurun onu buradan inceleyin:
http://belgeler.org/howto/lgpl.html
Ozetle soylemek gerekirse: LGPL lisansli kitaplikla *dinamik olarak*
baglanmis bir programda _yaklasik olarak_ herhangi bir kisitlamayla
karsilasmazsiniz. Bu lisans GPL'in bulasici ozelliklerinin kirpilmis
halidir. (Suphesiz ki isler o kadar da kontrolsuz degil. Mesela
bildigim kadariyla libc6'yla baglanmis bir programi dagitirken "bu kod
uzerinde reverse-engineering yapamazsiniz" gibi bir sart one surulemez.)
Eger libc6 GPL olarak lisanslansa idi dogrudan bu kitapliktaki
fonksiyonlari kullanan programinizin da *GPL* olarak dagitilmasi
gerekirdi. (Carpici bir ornek: Bash komut satirinda hergun
kullandiginiz `readline' kitapligi GPL'dir ve programiniz `readline'i
kullaniyorsa *GPL* olmak zorunda.) Aciktir ki boyle bir sart libc6'nin
yayginlasmasini yavaslatirdi. Bu yuzden LGPL icat edilmistir. (Bilgi
olarak gecmem uygun olur... libc6 disinda yaygin diger bir ornek Gtk
oluyor. Bu kitaplik da LGPL'dir.)
-- roktas