GCC 4.7 تو ابونتو ۱۱.۰۴: از نصب برنامه‌ها از سورس نباید ترسید

توجه بسیار مهم: نصب gcc بر اساس این آموزش ممکنه موجب بعضی اشکالات بشه. خود gnu توصیه میکنه gcc رو تو یه دایرکتوری کاملا جدا نصب کنیم تا بشه راحت هم پاکش کرد. بعدا مفصل تر راجع به این قضیه صحبت می‌کنم.

من رو لپتاپم اوبونتو ۱۱.۰۴ دارم. خیلی هم ابزار و خنزر پنزر روش دارم. حال آپدیت هم ندارم. از طرف دیگه می‌خوام که از ورژن ۴.۷ جی سی سی استفاده کنم. بنا به عادت اولین کار تو مخازن محترم دنبالش گشتم و نیافتم. بعدش تو ppa ها. اما متاسفانه برای نگارش اوبونتوی من جی سی سی رو نداشتن. (یه سوال همینجا بپرسم: مگه نگارشای مختلف اوبونتو چقد با هم فرق میکنن که یه بسته واسه ۱۱.۱۰ هست ولی واسه ۱۱.۰۴ نیست؟)

نتیجه اخلاقی شماره یک:
نباید بیش از حد به بسته‌های توزیعی که استفاده می‌کنم متکی باشم.

راه حل؟ کامپایل دستی:
۱- از اینجا آخرین ورژن کامپایلر محترم رو گرفتم.
۲- بعد از باز کردن آرشیو و ورود به دایرکتوری مربوطه، تو خط فرمان زدم:
[bash light=”true”]
./configure
[/bash]
اما این خطا رو داد:
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
اول چک کردم دیدم بسته‌های اینایی که میگه نصبن. بعد خود خطا رو گوگل کردم ولی چیز به درد بخوری پیدا نکردم. آخر خود خطا رو که خوندم دیدم گفته اگه این بسته‌ها رو روی توزیعتون دارین، اما سورسش رو ندارین، سورسش رو هم نصب کنین. منم رفتم و از تو سیناپتک سورسشون رو نصب کردم. (تو مخازن اوبونتو، سورس بسته‌ها معمولا با یه ‪-dev‬ در انتهاشون مشخص می‌شن)
و این دفعه با اجرای
[bash light=”true”]
./configure
[/bash]
فایل make ساخته شد.

نتیجه اخلاقی شماره دو:
گوگل یه موتور جستجوی خیلی عالیه، اما قرار نیست جای من فکر کنه.

۳- همونجا زدم:
[bash light=”true”]
make
[/bash]
و شروع کرد به کامپایل دوست عزیز. کار کامپایل زیاد طول میکشه واسه همین من هم تو این فاصله تیکه اول پست تا اینجا رو نوشتم. الانم میخوام برم ناهار. اوپس: اما باز یه اشکال پیش اومد:
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
compilation terminated.
ایندفعه با گوگل جواب پیدا میشه: باید gcc-multilib رو نصب کنم. بعد از نصب فرمان make رو اجرا می‌کنم. و این دفعه واقعا میرم ناهار…. از نهار برگشتم. اما هنوز کامپایل تموم نشده….
هاه. بالاخره تموم شد. حدود یک ساعت و پنجاه دقیقه طول کشید.
۴- خوب مرحله آخره. تو این مرحله هرچی کامپایل شده رو میریزیم سر جاهاش. واسه اینکه احتمال می‌دم برای کپی کردن فایل‌ها تو بعضی دایرکتوری‌ها مجوز روت بخواد با سودو اجراش می‌کنم:
[bash light=”true”]
sudo make install
[/bash]

… و تمام. الان نسخه ۴.۷ جی سی سی رو دستگاهم نصبه. کافیه امتحانش کنم:
[bash light=”true”]
gcc –version
[/bash]

نتیجه اخلاقی شماره سه:
از نصب برنامه‌ها از سورس نباید ترسید.

نصب ۴.۰ CUDA در اوبونتو ۱۱.۰۴

CUDA یه زبان برنامه نویسی برای برنامه نویسی همه منظوره بر روی کارتهای گرافیکی nVidia ست.
برای نصب CUDA تو اوبونتو خیلی اینور و اونور زدم. به خصوص نصب درایورهاش با X Server خیلی اذیت کنندست. تا اینکه بالاخره کشف کردم درایورهایی که اوبونتو برای کارت گرافیک nVidia نصب میکنه خودشون امکانات توسعه CUDA رو دارن. خوب این خبر خوبیه. برای اینکه مطمئن بشیم آخرین کارت ورژن کارت گرافیک رو داریم:
[bash light=”true”]
sudo apt-get update
sudo apt-get install nvidia-current
[/bash]
قبل از نصب CUDA باید gcc 4.4 رو نصب کرد. علت این مساله اینه که کامپایلر CUDA به طور داخلی از این نسخه gcc استفاده میکنه.
[bash light=”true”]
sudo apt-get install build-essential gcc-4.4 g++-4.4 libxi-dev libxmu-dev freeglut3-dev
[/bash]
مرحله بعد نصب CUDA SDK هست. nVidia ایران رو تحریم کرده. واسه همین هم من فایل مربوطه رو اینجا آپلود کردم. کافیه بعد دانلود اجراش کنید:
[bash light=”true”]
sudo sh devdriver_4.0_linux_32_270.41.19.run
[/bash]
بعد از اجرا برای تنظیمات فولدرهاش، این چند خط رو به فایل .bashrc تو فولدر home خودتون اضافه کنید:
[bash light=”true”]
export CUDA_HOME="/usr/local/cuda"
export LD_LIBRARY_PATH="{LD_LIBRARY_PATH}:${CUDA_HOME}/lib32"
export PATH=${CUDA_HOME}/bin:${PATH}
[/bash]
و برای اینکه این تغییرات اعمال بشن:
[bash light=”true”]
source ~/.bashrc
sudo ldconfig
[/bash]
در نهایت برای اینکه nvcc نسخه درست رو استفاده بکنه وارد فولدر home خودتون بشید و دستورات زیر رو اجرا کنید:
[bash light=”true”]
mkdir gcc44
cd gcc4
ln -s /usr/bin/cpp-4.4 cpp
ln -s /usr/bin/gcc-4.4 gcc
ln -s /usr/bin/g++-4.4 g++
[/bash]
بعد فایل usr/local/cuda/bin/nvcc.profile رو ویرایش کنید و خط زیر رو بهش اضافه کنید: (یادتون نره xxx رو عوض کنید)
[bash light=”true”]
compiler-bindir =/home/xxx/gcc44
[/bash]

تبریک میگم. الان دیگه می‌تونید برنامه هاتون رو با CUDA کامپایل کنید.
برای اینکه مطمئن بشید همه چی مرتبه:
[bash light=”true”]
cd ~/NVIDIA_GPU_Computing_SDK/C
make
[/bash]

منبع: اینجا و اینجا