BSD altında derleme yaparken /etc/make.conf dosyasını ayarlamak iyi fikirdir.
Bu noktada GCC veya Clang derleme yöntemlerinden birini isteğinize göre seçebilirsiniz.
FreeBSD 9.X sürümlerinden itibaren Clang yöntemi isteğe göre seçilebiliyor, 10.x sürümünden itibarende varsayılan olarak Clang'ın kullanılacakmış. ...
Clang'ı kontrol etmek için.
clang -v FreeBSD clang version 3.2 (tags/RELEASE_32/final 170710) 20121221 Target: x86_64-unknown-freebsd9.1 Thread model: posix
Tabii Clang şart değil, GCC ilede devam edebilirsiniz.
".....GCC
GCC de işlemcinizin marka/model bilgilerini iyi bilmeniz gerekir, dmesg çıktıları işinize yarayacaktır.
dmesg | grep -e CPU: -e Features CPU: AMD Turion(tm) 64 X2 Mobile Technology TL-52 (1600.25-MHz K8-class CPU) Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT> Features2=0x2001<SSE3,CX16> AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow!+,3DNow!> AMD Features2=0x1f<LAHF,CMP,SVM,ExtAPIC,CR8>
Burada bizi en çok ilgilendiren K8 kısmıdır, tabii bu sizde başka işlemci varsa daha değişik olacaktır, ona dikkat ederek, burayı [1] özellikle kontrol ederek, make.conf dosyanıza ilgili parametreleri en üste girmenizdir.
Benim üstte verdiğim çıktıya göre bir örneği görebilirsiniz.
CPUTYPE=k8 CHOST=x86_64-pc-linux-gnu CFLAGS=-march=k8 -msse3 -O2 -pipe CXXFLAGS=${CFLAGS}
DİKKAT:
Gentoo wiki'sinde önce işlemcinizin marka ve modeline göre arayın, tam eşleşmesine dikkat edin, eğer işlemciniz listede yoksa en yakın olan işlemciye göre parametre seçimini yapın.
"....Clang
Clang'ta olay biraz daha farklı Gentto wiki'sine gerek yok, /usr/src/contrib/llvm/lib/Support/Host.cpp dosyasında işlemcinizin modülünü bulup, make.conf'a girebilirsiniz.
Örn.
dmesg | grep -e CPU: -e Features CPU: AMD Turion(tm) 64 X2 Mobile Technology TL-52 (1600.25-MHz K8-class CPU) Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT> Features2=0x2001<SSE3,CX16> AMD Features=0xea500800<SYSCALL,NX,MMX+,FFXSR,RDTSCP,LM,3DNow!+,3DNow!> AMD Features2=0x1f<LAHF,CMP,SVM,ExtAPIC,CR8>
make.conf girilecek parametre.
CPUTYPE?=k8-sse3 CC=clang CXX=clang++ CPP=clang-cpp NO_WERROR= WERROR=
İşlemci tanımlamaları (flagları) aşağı yukarı böyledir.
---
Bu noktada ilginç durumlarda yok değil hani, örn. benim diğer makinenin işlemci modülü K8 gösterirken, AMD nin sitesinden araştırdığımında bunun K10 modülü olduğunu gördüm.
CPU: AMD Athlon(tm) II Dual-Core M320 (2099.31-MHz K8-class CPU) Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT> Features2=0x802009<SSE3,MON,CX16,POPCNT> AMD Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!> AMD Features2=0x377f<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,Prefetch,OSVW,IBS,SKINIT,WDT>
Görüldüğü gibi diğer K8 den daha fazla özelliğe sahip, dolayısıyla bende AMD sitesine göre (K10) düzenledim make.conf'u
K10 modülü Host.cpp dosyasında amdfam10 olarak geçiyor.
CPUTYPE?=amdfam10 CC=clang CXX=clang++ CPP=clang-cpp NO_WERROR= WERROR=
"...Ortak Parametreler
Make.conf dosyasına gerek GCC gereksede Clang kullanın fark etmez bazı öntanımlı derleme parametrelerinide girebilirsiniz.
KERNCONF=GENERIC WITHOUT_DEBUG=yes NO_PROFILE=yes BUILD_STATIC=yes WITH_LCD_FILTERING=yes WITHOUT_NOUVEAU=yes WITHOUT_PULSEAUDIO=yes NO_SENDMAIL=yes KDE4_PREFIC=yes WITH_NLS=yes WITH_X11=yes
WITH ilgili parametreyi kabul eder.
WITHOUT da ret etmek için kullanılır.
Birde parallel ports denilen bir özellik var, bu da işlemcinizin gücüne göre daha fazla işlem yapması anlamına geliyor, çoğu portlar parallel port derlemesini destekliyor ama bazı java, icedtea-web gibi uygulamalar bunu desteklemiyor.
Dolayısıyla bu özelliği kullanmak için altaki parametreyi kullanabilirsiniz.
#DISABLE_MAKE_JOBS=true FORCE_MAKE_JOBS=yes MAKE_JOBS_NUMBER=4
Eğer ki derlemede sorun çıktıysa bu büyük ihtimal MAKE_JOBS desteğini kapatmanız gerekecektir o zamanda satırı böyle yapınız.
DISABLE_MAKE_JOBS=true #FORCE_MAKE_JOBS=yes #MAKE_JOBS_NUMBER=4
Derleme yaparken top -CHIP ile işlemci hareketlerini gözlemyebilirsiniz.
[1]
İşlemciye Özel CFLAGS Değerleri Türkçe (eski)
Processor Specific CFLAGS Orjinal (güncel)
Kaynaklar:
https://wiki.freebsd.org/BuildingFreeBSDWithClang
https://wiki.freebsd.org/PortsAndClang
http://forums.freebsd.org/showthread.php?t=19469
http://www.freebsd.org/cgi/man.cgi?query=make.conf&sektion=5
http://networking.ringofsaturn.com/Unix/freebsdmakeconf.php
http://blog.up-link.ro/freebsd-optimizations-etc-make-conf/
http://basicuse.net/articles/os/bsd/freebsd/optimization_by_make_conf_in_freebsd
yorum yok:
Yorum Gönder