পিপিএ থেকে জি ++ 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.