عمل کامپایل برنامهها میتواند مدت زمان زیادی به طول بینجامد. به کمک ccache میتوان عمل کامپایل را سرعت بخشیده و در زمان صرفه جویی کرد. نحوه کار ccache به این صورت است که وقتی شما برنامهای را با استفاده از ccache کامپایل میکنید، نتیجه عملیاتِ کامپایل کش شده و در دفعات بعدی از آن استفاده میشود.
نصب
ccache را میتوانید از طریق پورت های FreeBSD نصب کنید:
# cd /usr/ports/devel/ccache && make install clean
و همین طور از طریق بستههای باینری:
# pkg_add -r ccache
پیکربندی
خطوط زیر را به فایل /etc/make.conf اضافه کنید:
.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*)) .if !defined(NOCCACHE) CC:=${CC:C,^cc,/usr/local/libexec/ccache/world/cc,1} CXX:=${CXX:C,^c\+\+,/usr/local/libexec/ccache/world/c++,1} .endif .endif
البته میتوایند مقادیر CC و CXX را متناسب با کامپایلر مورد علاقه خود تنظیم کنید. اما به یاد داشته باشید که برای کامپایل هسته و world حتماً باید از GCC یا Clang استفاده کنید.
اگر از csh یا tcsh استفاده میکنید، خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:
setenv PATH /usr/local/libexec/ccache:$PATH setenv CCACHE_PATH /usr/bin:/usr/local/bin setenv CCACHE_LOGFILE /var/log/ccache.log
اگر از Korn shell و یا Bourne Shell استفاده میکنید خطوط زیر را به فایل /etc/profile اضافه کنید:
export PATH=/usr/local/libexec/ccache:$PATH export CCACHE_PATH=/usr/bin:/usr/local/bin export CCACHE_LOGFILE=/var/log/ccache.log
به صورت پیش فرض، اندازه فضای کش ۱GB در نظر گرفته شده که به علت محدود بودن سیستم فایل /، بهتر است دایرکتوری کش را در سیستمفایلی به غیر از / در نظر بگیرید. برای انجام این کار بسته به پوسته ای که استفاده میکنید خطوط زیر رابه فایلهای مربوطه اضافه کنید:
اگر از csh یا tcsh استفاده میکنید، خط زیر را به فایل /etc/csh.cshrc اضافه کنید:
setenv CCACHE_DIR "/usr/.ccache"
اگر از Korn shell و یا Bourne Shell استفاده میکنید خط زیر را به فایل /etc/profile اضافه کنید:
export CCACHE_DIR=/usr/.ccache
همان طور که گفته شد اندازه دایرکتوری کش به صورت پیش فرض ۱GB در نظر گرفته شده است. برای تغییر اندازه این دایرکتوری خطوط زیر را به فایل /etc/csh.cshrc اضافه کنید:
if ( -x /usr/local/bin/ccache ) then /usr/local/bin/ccache -M 512m > /dev/null endif
البته به جای ۵۱۲m مقدار مورد نظر خود را قرار دهید.
در پایان، اگر در هنگام کامپایل به مشکلی برخوردید، متغیر NOCCACHE را مقداردهی کرده و عملیات را دوباره شروع کنید:
make NOCCACHE=yes buildworld buildkernel