OpenJDK İnşa(Building) Part4
Bu makalede OpenJDK inşa(build) serisinin 4.bölümü işlenecektir.
OpenJDK inşa serisinin 1.bölüm yazısı için LİNK,
OpenJDK inşa serisinin 2.bölüm yazısı için LİNK,
OpenJDK inşa serisinin 3.bölüm yazısı için LİNK ziyaret edebilirsiniz.
Bu bölümden itibaren inşa sürecinin teknik içeriğine giriş yapıyoruz.
Dolayısıyla asıl iş için kolları sıvayıp komutlara bulaşıyoruz.
Boot JDK Gereksinimleri
JDK inşa süreci için hazır bir JDK’ya ihtiyaç vardır.Dolayısıyla önceden hazırlanmış bir JDK’yı, kullanacağımız tool’lar içine katarak yeni JDK’yı inşa için kullanacağız.Bu hazır JDK’ya “Boot JDK(Önyükleme JDK)” denir.
Ancak bu Boot JDK’sının doğrudan OpenJDK topluluğundan bulunan kaynak kodundan oluşturulmuş bir JDK olması gerekmez.
Dolayısıyla yeni inşa ettiğiniz platform için daha önceden o platform için kullanılan bir JDK kullanılabilir.
Boot JDK sürecinin sağlıklı atlatılabimesi için temel bir kuralı unutmamak gerekir. Bu kural N-1 olarak adlandırılmıştır. Temel kuraldaki N-1 anlamı,JDK ana sürüm N’yi oluşturmak için boot JDK’nın ana sürüm N-1 JDK’sı olması gerektiğidir.Yani JDK 9'u inşa etmek için JDK 8'i boot olarak kullanmak uygun olacaktır. Ancak JDK yayın döngüsünde,N-1 sürümü henüz yayınlanmamış olabilir. Bu durumda ise boot JDK olarak tercih edilecek JDK sürümü N-2 olabilir.
NOT: Boot JDK’sı otomatik olarak algılanmazsa veya yanlış JDK seçilirse,kullanılacak doğru JDK’yı işaret etmek için “ — — with-boot-jdk” komutu kullanılmalıdır.
Derlenmiş(binary) JDK dosyasını edinme:
Linux,Windows ve macOS için JDK binary dosyaları jdk.java.net sitesinden indirebilirsiniz. Diğer alternatif ise Oracle sitesinden indirilebilir.
İkinci alternatif olarak “Adopt OpenJDK Projesi”’dir. Adopt OpenJDK,çeşitli platformlar için oluşturulmuş deneysel binary dosyalarını bu linkten edinmek mümkündür.
Eğer çalışma platformunuz Linux ise,ilgili linux dağıtımınızdan JDK edinebilirsiniz.
Aşağıda verilen komutu apt tabanlı linux dağıtımlarında(Debian,Ubuntu) kullanarak JDK indirebilir-edinebilirsiniz.
sudo apt-get install openjdk-<VERSION>-jdk
Rpm tabanlı linux dağıtımlarında(Fedora,Red Hat) ise aşağıdaki komut yeterli olacaktır.
sudo yum install java-<VERSION>-openjdk-devel
Harici Kütüphane Gereksinimleri
Farklı platformlar farklı harici kütüphaneler gerektirir. Genel olarak kütüphaneler isteğe bağlı değildir. Ya platform için gereklidirler ya da kullanılmazlar. Eğer gerekli kütüphaneler “configure” ile algılanmazsa,bu kütüphaneleri yollarını belirterek sağlamanız gerekir.
Bir harici kütüphaneyi “configure”’den bağımsız belirtmenin iki biçimi vardır.
Bunların ilki:
--with-<LIB>=<path>
ikincisi ise:
--with-<LIB>-include=<path to include> --with-<LIB>-lib=<path to lib>
Yukarıda verilenlerin ilki oldukça kısadır. Ancak bu kullanılacaksa,dahili dosyaların ve kütüphane dosyalarının belirtilen dizin altında varsayılan bir hiyerarşide yer almasını gerektirir. Bu kullanım çoğu durumda iyi çalışır. İkinci kullanım biçimi ise,dahili dosyaları ve kütüphanelere ait yolları ayrı ayrı belirtmenize izin verir biçimdedir.
FreeType:
FreeType,yazı tiplerni işlemek için kullanılabilen ücretsiz bir kütüphanedir.
Bu kütüphane C ile yazılmıştır.Oldukça küçük,verimli ve yüksek oranda taşınabilir ve özelleştirilebilir olması için tasarlanmıştır. Dolayısıyla platform bağımsızdır.FreeType’ı linux ortamlarına kurmak için aşağıdaki komutları kullanabilirsiniz.
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install libfreetype6-dev
Rpm tabanlı linux dağıtımlarına kurmak için:
sudo yum install freetype-devel
Apline linux için:
sudo apk add freetype-dev
Eğer “configure” komutu ile FreeType dosyalarını otomatik olarak bulunmazsa,aşağıdaki komutları kullanabilirsiniz:
--with-freetype-include=<path>
Ve
--with-freetype-lib=<path>
kullanarak manuel olarak dosya yollarını belirtmek gerekir.
CUPS:
Windows dışında tüm platformlarda CUPS(Common Unix Printing System)başlık dosyaları gereklidir.Genellikle bu dosyalar işletim sisteminiz tarafından sağlanır. Eğer çalışma platformunuz kurulum gerektirirse aşağıdaki komutları kullanabilirsiniz.
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install libcups2-dev
Rpm tabanlı linux dağıtımlarına kurmak için:
sudo yum install cups-devel
Apline linux için:
sudo apk add cups-dev
Eğer “configure” komutu CUPS dosyalarını otomatik olarak bulmazsa aşağıdaki komutu kullanabilirsiniz:
--with-cups=<path>
X11:
Linux ortamında belirli X11 kitaplıkları ve dahili dosyaları gereklidir.
Bu gereklilikleri kurmak için aşağıdaki komutları kullanabilirsiniz.
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
Rpm tabanlı linux dağıtımlarına kurmak için:
sudo yum install libXtst-devel libXt-devel libXrender-devel libXrandr-devel libXi-devel
Apline linux için:
sudo apk add libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
Eğer “configure” komutu X11 dosyalarını uygun şekilde bulamazsa aşağıdaki komutu kullanabilirsiniz:
--with-x=<path>
ALSA:
Linux ortamında ALSA(Advanced Linux Sound Architecture) gereklidir.
Ve ALSA’nın en az 0.9.1 sürümünü kurmanız gerekir.
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install libasound2-dev
Rpm tabanlı linux dağıtımlarına kurmak için:
sudo yum install alsa-lib-devel
Apline linux için:
sudo apk add alsa-lib-dev
Eğer “configure” komutu ALSA dosyalarını uygun şekilde bulamazsa aşağıdaki komutu kullanabilirsiniz:
--with-alsa=<path>
libffi:
Yüksek seviyeli diller için derleyiciler belirli kuralları izleyen kodlar üretir.
Bu süreç için libffi kütüphanesini kullanmak oldukça faydalı olacaktır.
Kurulum için aşağıdaki komutları kullanabilirsiniz:
Apt tabanlı linux dağıtımlarına kurmak için:
sudo apt-get install libffi-dev
Rpm tabanlı linux dağıtımlarına kurmak için:
sudo yum install libffi-devel
Apline linux için:
sudo apk add libffi-dev
Eğer “configure” komutu libffi dosyalarını uygun şekilde bulamazsa aşağıdaki komutu kullanabilirsiniz:
--with-libffi=<path>
Bir sonraki bölümde Build süreci işlenecektir.
-end of