পিপিএ থেকে জি ++ 4.8 ডাউনলোড করেছেন তবে এটি ডিফল্ট হিসাবে সেট করতে পারবেন না?


15

আমি উবুন্টু 12.10 এ জি ++ 4.8 ডাউনলোড করেছি:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.8

কিন্তু যখন আমি করি:

sudo update-alternatives --config g++

জি ++ সংস্করণগুলিতে স্যুইচ করতে এটি বলে:

update-alternatives: error: no alternatives for g++.

তবে আমি যদি করি:

g++ --version

এটা বলে:

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

আমি কীভাবে আমার g ++ 4.8 ইনস্টলেশনটি ডিফল্ট g ++ হতে সেট করব?

উত্তর:


11

প্রথমত, আপনাকে অবশ্যই আবিষ্কার করতে হবে যে সমস্ত সরঞ্জামগুলির আপনার 4.8 বাইনারি রয়েছে:

$ which gcc-4.8
/usr/bin/gcc-4.8
$ which g++-4.8
/usr/bin/g++-4.8
$ ls /usr/bin/*-4.8
/usr/bin/cpp-4.8         /usr/bin/x86_64-linux-gnu-cpp-4.8
/usr/bin/g++-4.8         /usr/bin/x86_64-linux-gnu-g++-4.8
/usr/bin/gcc-4.8         /usr/bin/x86_64-linux-gnu-gcc-4.8
/usr/bin/gcc-ar-4.8      /usr/bin/x86_64-linux-gnu-gcc-ar-4.8
/usr/bin/gcc-nm-4.8      /usr/bin/x86_64-linux-gnu-gcc-nm-4.8
/usr/bin/gcc-ranlib-4.8  /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.8
/usr/bin/gcov-4.8

সুতরাং, আমাদের সমস্ত বাইনারি রয়েছে, এখন দেখা যাক যে এই জাতীয় বাইনারিগুলির জন্য কিছু সিমলিংক উপলব্ধ রয়েছে:

$ cd /usr/bin
$ ls -l gcc* cpp g++
lrwxrwxrwx 1 root root      7 sep 18 14:02 cpp -> cpp-4.7
lrwxrwxrwx 1 root root      7 abr 22  2013 g++ -> g++-4.7
lrwxrwxrwx 1 root root      7 sep 18 14:02 gcc -> gcc-4.7

আমরা দেখতে পারেন, শুধুমাত্র cpp, g++এবং gccসিম্বলিক লিঙ্ক আছে। আমাদের এখানে দুটি বিকল্প রয়েছে।

Symlinking

আমরা প্রতীকগুলি প্রথমে সরিয়ে, আমাদের সাথে প্রতিলিঙ্কগুলি প্রতিস্থাপন করি:

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++

তারপরে আমাদের তৈরি করা

sudo ln -s /usr/bin/cpp-4.8 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.8 /usr/bin/g++

এটিকে ফিরিয়ে আনতে একই কমান্ডগুলি ব্যবহার করুন তবে তার পরিবর্তে 4.7 বা 4.6 ব্যবহার করুন

sudo rm /usr/bin/cpp /usr/bin/gcc /usr/bin/g++
sudo ln -s /usr/bin/cpp-4.7 /usr/bin/cpp
sudo ln -s /usr/bin/gcc-4.7 /usr/bin/gcc
sudo ln -s /usr/bin/g++-4.7 /usr/bin/g++

আমি যখন করেনি করুন: ls -l জিসিসি * CPP ছ ++, এটা ফিরে ম: করতে পারেন না এক্সেস জিসিসি *: এমন কোনো ফাইল অথবা ডাইরেক্টরি ম: অ্যাক্সেস করতে পারবেন না CPP: কোন ধরনের ফাইল অথবা ডাইরেক্টরি ম: অ্যাক্সেস করতে পারে না গ্রাম ++,: যেমন কোন ফাইল বা ডিরেক্টরি
— user997112

কোন ক্ষমা চাওয়ার প্রয়োজন নেই :) একবার আমি মুছে ফাংশনটি কল করি এটি কাজ করে তবে আমি যখন "আমাদের" সিমলিংক তৈরি করতে যাই তখন এটি বলে: sudo ln -s -T / usr / bin / cpp /usr/bin/cpp-4.8 ln: ব্যর্থ প্রতীকী লিঙ্ক তৈরি করতে us /usr/bin/cpp-4.8 ': ফাইল উপস্থিত রয়েছে
— user997112

(আমি আরএম কমান্ডটি দু'বার ডেকেছি ঠিক তখনই দ্বিতীয়বার এটি নিশ্চিত / অভিযোগ করেছিল যে বিদ্যমান লিঙ্কগুলি আসলে মুছে ফেলা হয়েছে)
— user997112

3
এটি একটি ভয়ানক ধারণা । অনেকগুলি প্রোগ্রাম রয়েছে যারা gccকার্নেল মডিউলগুলি সংকলন করতে ব্যবহার করে এবং তাদের মধ্যে কিছু (যেমন এনভিডিয়া) নীরবে ক্র্যাশ হয়ে যায় যখন gccতারা ডাকে যখন কার্নেলটি সংকলিত হয়েছিল তেমনটি হবে না।
— nbubis

1
@ নুবুইস ভাল, প্রশ্নটি হল "আমি কীভাবে আমার জি ++ ৪.৮ ইনস্টলেশনটি ডিফল্ট জি ++ হিসাবে সেট করব?" সুতরাং, যে কেউ এই কাজটি করে, তাদের ধারণা করা উচিত যে তারা কী করছে, না? অন্যদিকে, আপনি কোন বিকল্প প্রস্তাব করতে পারেন?
— ব্রায়াম

16

আপনি জানানোর প্রয়োজন বোধ করি update-alternativesজানেন যে আপনি 2 সি ++ কম্পাইলার আছে, প্রত্যেকের জন্য কনফিগার আপনি কোনটি ব্যবহার করতে চান একটি রেকর্ড তৈরি করুন এবং তারপর। এটি নিম্নলিখিত দ্বারা সম্পন্ন করা হয়:

sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6.3 60
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
sudo update-alternatives --config g++ 

এই বিন্দু থেকে এগিয়ে, কম্পাইলারগুলি স্যুইচ করার সময় কেবলমাত্র প্রয়োজনীয় জিনিসটি হ'ল এই আদেশ:

sudo update-alternatives --config g++

দেখুন man update-alternativesআরও তথ্যের জন্য।

সূত্র: জিসিসির একাধিক উদাহরণ কীভাবে ব্যবহার করবেন?


@ ব্রাইয়াম এটি কোনও প্যাকেজ দিয়ে একইভাবে করা যেতে পারে।
— রাদু রেডানু

3
কেউ কি 60 এবং 40 তে বিস্তারিত বলতে পারেন? আমি এটি প্রচুর জায়গায় দেখেছি
— ব্যবহারকারীর 997112

@ ইউজার 997112 আমি আপনাকে সেই লোকটি পড়ার পরামর্শ দিচ্ছি, তবে আপনি যদি 70 এবং 30 টি বেশি পছন্দ করেন তবে 70 এবং 30 ব্যবহার করুন ...
— রাদু রেডানু

1
@ ব্যবহারকারী 997112 এগুলি অগ্রাধিকারের সংখ্যা এবং কেবলমাত্র --auto ব্যবহার করার সময় প্রাসঙ্গিক। আপনি কয়েকটি উদাহরণ ব্যবহার করে দেখতে পাচ্ছেনupdate-alternatives --display editor
— ব্রায়াম

2
12.04-এ আমি পেয়েছি: আপডেট-বিকল্পগুলি: ত্রুটি: বিকল্প জি ++ মাস্টার হতে পারে না: এটি
— জিসিসির

9

এটি মাস্টার এবং স্লেভ (জিসিসি এবং জি ++) বিকল্পগুলি কীভাবে তৈরি এবং পরিচালনা করতে পারে তা দুর্দান্ত বিবরণ এবং ধাপে ধাপে নির্দেশ।

শীঘ্রই, এটি

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 
sudo update-alternatives --config gcc

উবুন্টুকে জিজ্ঞাসা করুন স্বাগতম! যতক্ষণ এই তাত্ত্বিক প্রশ্নের উত্তর হতে পারে, এটা বাঞ্ছনীয় হবে উত্তর অপরিহার্য অংশের এখানে অন্তর্ভুক্ত করা, এবং রেফারেন্স এর জন্য লিঙ্ক প্রদান।
— স্টর্মভেরিক্স

তুমি ঠিক বলছো. আমি প্রয়োজনীয় অংশটি যুক্ত করেছি
— অ্যান্টন কে

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