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.
".....GCCGCC 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.
"....ClangClang'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 ParametrelerMake.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/BuildingFreeBSDWithClanghttps://wiki.freebsd.org/PortsAndClanghttp://forums.freebsd.org/showthread.php?t=19469http://www.freebsd.org/cgi/man.cgi?query=make.conf&sektion=5http://networking.ringofsaturn.com/Unix/freebsdmakeconf.phphttp://blog.up-link.ro/freebsd-optimizations-etc-make-conf/http://basicuse.net/articles/os/bsd/freebsd/optimization_by_make_conf_in_freebsd