আমি কীভাবে ক্যাশে সেট আপ করব?


36

সংকলনের গতি বাড়ানোর জন্য আমি ccache ব্যবহার করতে চাই ।

আমি জুড়ে এসেছি কীভাবে আমি ক্যাশে সক্ষম করব?

আমি এ পর্যন্ত এটিই করেছি:

$ sudo apt-get install -y ccache
$ dpkg -l ccache
ii  ccache  3.1.6-1   Compiler cache for fast recompilation of C/C++ code
$ whereis ccache
ccache: /usr/bin/ccache /usr/lib/ccache /usr/bin/X11/ccache /usr/share/man/man1/ccache.1.gz

আমি ccacheআমার ~/.bashrcফাইলটিতে এটিকে যুক্ত করে পথে যুক্ত করেছি :

$ export PATH="/usr/lib/ccache:$PATH"
$ source ~/.bashrc
$ echo $PATH
/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

প্রতীকী লিঙ্কগুলি দেখতে দুর্দান্ত:

$ ll /usr/lib/ccache/
total 76
drwxr-xr-x   2 root root  4096 mai   22 10:48 ./
drwxr-xr-x 253 root root 69632 mai   22 10:48 ../
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 avr-gcc-4.5.3 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c89-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 c99-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 cc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 gcc-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++ -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-g++-4.6 -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc -> ../../bin/ccache*
lrwxrwxrwx   1 root root    16 mai   22 10:48 x86_64-linux-gnu-gcc-4.6 -> ../../bin/ccache*

লিঙ্কটি ভাল দেখাচ্ছে:

$ which g++
/usr/lib/ccache/g++

$ make
g++ -o affine_euler affine_euler.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3
g++ -o test_eigen test_eigen.cpp -O3 -DEIGEN_NO_DEBUG -I/usr/include/eigen3

তবে ক্যাশেটি খালি:

$ ccache -s
cache directory                     /home/dell/.ccache
cache hit (direct)                     0
cache hit (preprocessed)               0
cache miss                             0
files in cache                         0
cache size                             0 Kbytes
max cache size                       1.0 Gbytes

আমি কোথায় ভুল করছি?


আমি বুঝতে পেরেছি এটি সাধারণ ক্ষেত্রে কাজ করে তবে আমার মেকফিলের সাথে নয় (উদাহরণস্বরূপ cmake দিয়ে কাজ করে)। সুতরাং আমি অনুমান করি সমস্যাটি আমার মেকফাইলে এবং ccache কনফিগারেশনে নয়।
ভিক্টর ল্যামোইন

উত্তর:


45

স্থাপন:

# Install package
sudo apt install -y ccache

# Update symlinks
sudo /usr/sbin/update-ccache-symlinks

# Prepend ccache into the PATH
echo 'export PATH="/usr/lib/ccache:$PATH"' | tee -a ~/.bashrc

# Source bashrc to test the new PATH
source ~/.bashrc && echo $PATH

আপনার পথটি (অন্ততপক্ষে শুরু) দেখতে এমন হওয়া উচিত:

/usr/lib/ccache:/usr/local/cuda-5.5/bin/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

এবং g++/ gccএখন দেখানো উচিত:

which g++ gcc
/usr/lib/ccache/g++
/usr/lib/ccache/gcc

কনফিগারেশন:

আপনি যদি ক্যাশের ফাইল সংখ্যা এবং আকারের কোনও সীমা না চান:

ccache -F 0
ccache -M 0

ক্যাশের পরিসংখ্যান দেখান:

ccache -s

ক্যাশে খালি করুন এবং পরিসংখ্যানগুলি পুনরায় সেট করুন:

ccache -C -z

ব্যবহার:

আপনি যখনই ফোন করবেন gccবা g++; ccacheবলা হয়. আমার ভুলটি হ'ল আমি ইতিমধ্যে সংকলিত ফাইলগুলি মুছলাম না। আপনার সমস্ত CMake/ আউটপুট ফাইলগুলি মুছুন এবং আবার কনফিগার করুন / সংকলন করুন।

আপনার ccacheতখন খালি থাকা উচিত নয়। এখন একটি চেষ্টা make cleanএবং makeএবং আপনি এটি চেয়ে ক্যাশে পুনরায় কম্পাইল সবকিছু ধন্যবাদ অনেক দ্রুততর দেখতে পাবেন।


কিছু এই নির্দেশ অনুসরণ করার পরে, ccache ঝাঁকুনি এবং ঝাঁকুনি + + ক্যাশে না ...
ওয়াং

4

আপনার $PATHসঠিক দেখাচ্ছে না; ccacheএর ডিরেক্টরি সেখানে থাকা উচিত। শুধু রান:

export PATH="/usr/lib/ccache/:$PATH"

... এবং আপনার g++আদেশগুলি আবার চেষ্টা করুন । এই ডিরেক্টরিটিতে প্রক্সি কমান্ডগুলি পূর্ণ ccache। এটি বেশিরভাগ স্ক্রিপ্টগুলির সাথে কাজ করা উচিত।


যদি আপনি কেবল g++ম্যানুয়ালি কল করছেন (যেখানে আপনি তৈরি করছেন সেখানে উপরের মতো নয়), আপনি কেবল কমান্ডটি শোধ করতে পারেন:

ccache g++ ...

এই ডিরেক্টরিটি বিদ্যমান নেই: $ ls -1 /usr/lib/ccache/ avr-g++ avr-gcc avr-gcc-4.5.3 c++ c89-gcc c99-gcc cc g++ g++-4.6 gcc gcc-4.6 x86_64-linux-gnu-g++ x86_64-linux-gnu-g++-4.6 x86_64-linux-gnu-gcc x86_64-linux-gnu-gcc-4.6
ভিক্টর ল্যামোইন

আমি একটি আর্চ টিউটোরিয়াল পড়ছিলাম। সবকিছু যদি কেবলমাত্র /usr/lib/ccache/এটি ব্যবহার করে।
অলি

এটি export PATH="/usr/lib/ccache/:$PATH" ccache বাইনারি /usr/binএবং এর সাথে কাজ করে না /usr/bin/X11। আমি এই দুটি পথই সাফল্য ছাড়াই চেষ্টা করেছি
ভিক্টর ল্যামোইন

তবে প্রক্সি কমান্ডগুলি (যেমন আপনি উপরে তালিকাবদ্ধ করেছেন) সবই রয়েছে /usr/lib/ccache/। আপনি এগুলি আপনার পথে যুক্ত করুন যাতে makeকল g++বা অন্য যে ccকোনও কিছু এটি আসলে- ccacheসক্ষম সংস্করণটিকে কল করে ।
অলি

আমি কাছে আছি কারণ লিঙ্কটি এখন ক্যাশেতে নির্দেশ করেছে (আমি প্রথম পোস্টটি সম্পাদনা করেছি) তবে ক্যাশে সর্বদা খালি থাকে।
ভিক্টর ল্যামোইন

1

ইনস্টলেশন সম্পর্কিত:

আমি খুঁজে পেয়েছি যে উবুন্টু 18.04 (বায়োনিক বিভার) এ শিপড ডিফল্ট ccএবং এর অনুরোধটি ধরা দেয় না c++। সেখানে পুরোপুরি সিসিটি ইনস্টল করতে আপনার প্রয়োজন:

sudo apt install ccache
sudo /usr/sbin/update-ccache-symlinks
export PATH="/usr/lib/ccache/:$PATH"

এবং তারপরে (আপডেট হওয়া সিমলিংকের কারণে) এছাড়াও কল করে ccএবং c++ধরা পড়ে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.