24 Mart 2013 Pazar

Make.conf'u ayarlamak (GCC veya Clang)


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

Benzer Yayınlar

Make.conf'u ayarlamak (GCC veya Clang)
4/ 5
Oleh

Abone Olun!

Beğendiyseniz yayınlara abone olabilirsiniz.