Редагувати:
Це передбачає, що ви встановили версію спочатку, наприклад:
sudo apt install gcc-4.9 g++-4.9
Оригінал:
А ось однолінійний для тих, хто лінивий, просто змініть, змінивши номер в кінці на потрібну версію. Він внесе зміни для gcc та / або g ++
ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9
У цьому прикладі я перейшов на 4,9
У цьому прикладі немає перевірок помилок, а що ні, у цьому прикладі, тому ви, можливо, захочете перевірити, що буде запущено, перш ніж запустити його. Просто додайте ехо перед судо . Для повноти надаю і контрольну лінію:
ls -la /usr/bin/ | grep -oP "[\S]*(gcc|g\+\+)(-[a-z]+)*[\s]" | xargs bash -c 'for link in ${@:1}; do echo sudo ln -s -f "/usr/bin/${link}-${0}" "/usr/bin/${link}"; done' 4.9
Вихід з чека повинен бути приблизно таким:
sudo ln -s -f /usr/bin/g++-4.9 /usr/bin/g++
sudo ln -s -f /usr/bin/gcc-4.9 /usr/bin/gcc
sudo ln -s -f /usr/bin/gcc-ar-4.9 /usr/bin/gcc-ar
sudo ln -s -f /usr/bin/gcc-nm-4.9 /usr/bin/gcc-nm
sudo ln -s -f /usr/bin/gcc-ranlib-4.9 /usr/bin/gcc-ranlib
sudo ln -s -f /usr/bin/x86_64-linux-gnu-g++-4.9 /usr/bin/x86_64-linux-gnu-g++
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-4.9 /usr/bin/x86_64-linux-gnu-gcc
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ar-4.9 /usr/bin/x86_64-linux-gnu-gcc-ar
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-nm-4.9 /usr/bin/x86_64-linux-gnu-gcc-nm
sudo ln -s -f /usr/bin/x86_64-linux-gnu-gcc-ranlib-4.9 /usr/bin/x86_64-linux-gnu-gcc-ranlib
Ви можете перевірити версію після:
gcc --version
Напівточне пояснення:
- ls -la / usr / bin / перелічує всі файли в / usr / bin
- | передати (відправити) вихід до наступної команди
- grep -oP відповідає пошуковому знаку за рядком. o показує результат не лише у всіх збіганих рядках. P говорить grep використовувати perl-регулярний вираз. Я не буду тут вдаватися в регулярний вираз, читайте його, якщо хочете.
- xargs, просто кажучи, він збирає результати, які передаються до нього, і надсилає їх усі до кінця. тобто до команди, що слідує за xargs
- баш добре, це баш. З прапором каже його використовувати рядок в якості команди. У цьому прикладі він циркулює над аргументами, надісланими з xargs , пропускаючи перший (0-й) аргумент, в цьому випадку цикл пропускає 4.9 . 0-й аргумент використовується в циклі для зміни посилання.
- пер -s -f s прапор має символічне посилання, ф сил видалити зв'язок першим , якщо це необхідно.