Обновите GCC 4.6.3 в Ubuntu 12.04 до 4.8.2 с помощью перехода на новый компилятор

0

Я хочу перейти с g++ с 4.6.3 до 4.8, а затем использовать новый компилятор.

ВНИМАНИЕ: make ниже не удалось!

../.././libcc1/findcomp.cc:20:20: fatal error: config.h: No such file or directory compilation terminated.

Из этого ответа:

sudo apt-get install libmpfr-dev libgmp3-dev libmpc-dev flex bison

svn checkout svn://gcc.gnu.org/svn/gcc/trunk

cd trunk

./configure --prefix=/opt/gcc-4.8.2/usr/local/gcc-4.8.2 --enable-languages=c,c++

make

make install

Компилятор будет помещен в каталог /opt/, поэтому вы должны использовать его оттуда.

Мои вопросы (если вы считаете, что вышеуказанные шаги ошибочны, укажите это):

  1. Есть ли еще более простой способ сделать это?
  2. Как выполнить последний шаг? Я имею в виду, я думаю, я мог бы сделать /opt/g++-4.8 или что-то в этом роде, но что мне нужно сделать, чтобы моя система увидела этот компилятор, когда компилирую с g++?

Соответствующий вопрос.

  • 1
    как насчет добавления символьной ссылки или написания скрипта для адаптации другого компилятора? Я использую оба эти способа в своей повседневной жизни
  • 0
    Как я могу это сделать? Не могли бы вы показать мне @HowChen, может быть, с ответом? В настоящее время я нахожусь в процессе make , поэтому я не могу проверить это сразу.
Показать ещё 3 комментария
Теги:
gcc
g++

1 ответ

0
Лучший ответ

Я просто показываю идею, как адаптировать другой компилятор, переключая их в оболочку

Я предоставляю вам свою базовую платформу для моей установки, предварительное условие - вы уже знаете, где ваша последняя g++ и предыдущая версия g++ s. Я бы хотел сделать так:

#I create some color for $PS1 use
black="\[\033[1;30m\]"
red="\[\033[1;31m\]"
green="\[\033[1;32m\]"
yellow="\[\033[1;33m\]"
blue="\[\033[1;34m\]"
purple="\[\033[1;35m\]"
cyan="\[\033[1;36m\]"
white="\[\033[1;37m\]"
coloroff="\[\033[0m\]"
highlight="\[\033[1m\]"
underline="\[\033[4m\]"
twinkle="\[\033[5m\]"
reverse="\[\033[7m\]"
unvisible="\[\033[8m\]"

#you can add some default path, I just list my daily use path for you, you need modify them
DEFAULT_PATH="/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:$HOME/bin"

#default setting, I usually use gcc, so you need modify to g++
function default(){
export PATH="$DEFAULT_PATH"
PS1="\[\033]2;\u@\h:\w\a\]$red[GNU-GCC]$blue\u@\h:$coloroff\w\n-> "
gcc_ver='gcc --version | head -n 1'
}

#you can add more compiler, even some dedicate old version of g++, just copy my function and modify the bin path

#arm-linux-gcc setting, I also use cross compiler
function armlinuxgcc(){
export PATH="$DEFAULT_PATH"
PS1="\[\033]2;\u@\h:\w\a\]$red[ARM-Linux-GCC]$blue\u@\h:$coloroff\w\n-> "
arm_linux_gcc_ver='arm-linux-gnueabi-gcc-4.7 --version | head -n 1'
}

#I also use dedicate compiler provide by arm
function RVCT22B616(){
#for RVCT2.2
export PATH="$DEFAULT_PATH:$HOME/Software/RVS22-BN-00000-r2p2-01rel0/rvds_2_2_1_dist241_linux/RVCT/Programs/2.2/503/linux-pentium"
export RVCT22INC="$HOME/Software/RVS22-BN-00000-r2p2-01rel0/rvds_2_2_1_dist241_linux/RVCT/Data/2.2/503/include/unix"
export RVCT22LIB="$HOME/Software/RVS22-BN-00000-r2p2-01rel0/rvds_2_2_1_dist241_linux/RVCT/Data/2.2/503/lib"
PS1="\[\033]2;\u@\h:\w\a\]$red[ARM2.2B616]$blue\u@\h:$coloroff\w\n-> "
armcc_ver='armcc --vsn | head -n 1'
#end of RVCT2.2
}

function RVCT31B1055(){         
#for RVCT3.1
export PATH="$DEFAULT_PATH:$HOME/Software/RVP31-PA-00001-r3p1-09rel0/linux-pentium"
export RVCT31INC="$HOME/Software/RVP31-PA-00001-r3p1-09rel0/include/unix"
export RVCT31LIB="$HOME/Software/RVP31-PA-00001-r3p1-09rel0/lib"
PS1="\[\033]2;\u@\h:\w\a\]$red[ARM3.1B1055]$blue\u@\h:$coloroff\w\n-> "
armcc_ver='armcc --vsn | head -n 1'
#end of RVCT3.1
}

function RVCT41B894(){
#for RVCT4.1
export PATH="$DEFAULT_PATH:$HOME/Software/RVP41-PA-00001-r4p1-05rel0/standard-linux-pentium-rel/linux-pentium"
export ARMCC41INC="$HOME/Software/RVP41-PA-00001-r4p1-05rel0/standard-linux-pentium-rel/include/unix"
export ARMCC41LIB="$HOME/Software/RVP41-PA-00001-r4p1-05rel0/standard-linux-pentium-rel/lib"
PS1="\[\033]2;\u@\h:\w\a\]$red[ARM4.1B894]$blue\u@\h:$coloroff\w\n-> "
armcc_ver='armcc --vsn | head -n 1'
#end of RVCT4.1
}

function DS5B94(){
#for DS-5
export PATH="$DEFAULT_PATH:/usr/local/DS-5/bin/"
export ARMCC5INC="/usr/local/DS-5/include/"
PS1="\[\033]2;\u@\h:\w\a\]$red[ARM5.0B94]$blue\u@\h:$coloroff\w\n-> "
armcc_ver='armcc --vsn | head -n 1'
#end of DS-5
}

Затем пусть пользователь может выбрать этот компилятор:

default
function sel_env(){
echo "**************************"
echo "* Switch Compile env:"
echo "* 1. ARMCC 2.2 Build[616]"
echo "* 2. ARMCC 3.1 Build[1055]"
echo "* 3. ARMCC 4.1 Build[894]"
echo "* 4. ARMCC 5.0 Build[94]"
echo "* 5. ARM-Linux-GUNEABI-GCC"
echo "* 6. GCC"
echo "**************************"
read choose;
#select choose in "1" "2" "3"; do
    case $choose in
        1) RVCT22B616
            echo "CC -> $armcc_ver"
            echo "Compile Firmware and Boot Core";;
        2) RVCT31B1055
            echo "CC -> $armcc_ver"
            echo "Compile Boot Core";;
        3) RVCT41B894
            echo "CC -> $armcc_ver"
            echo "Compile Firmware";;
        4) DS5B94
            echo "CC -> $armcc_ver"
            echo "Compile Firmware";;
        5) armlinuxgcc 
            echo "CC -> $arm_linux_gcc_ver"
            echo "Corss compile";;
        *) default
            echo "CC -> $gcc_ver";;
    esac
#done
}

Теперь, после того, как вы открываете терминал, первый source этого ENV файл, или добавить эту операцию в .bashrc файл в вашем $HOME, а просто введите sel_env. Я покажу вам результат, если вы просто source этого файла:

how@ubuntu-sw:~/Work/.env$ ls
work.env
how@ubuntu-sw:~/Work/.env$ source work.env
[GNU-GCC]how@ubuntu-sw:~/Work/.env
-> ls
work.env
[GNU-GCC]how@ubuntu-sw:~/Work/.env
-> sel_env 
**************************
* Switch Compile env:
* 1. ARMCC 2.2 Build[616]
* 2. ARMCC 3.1 Build[1055]
* 3. ARMCC 4.1 Build[894]
* 4. ARMCC 5.0 Build[94]
* 5. ARM-Linux-GUNEABI-GCC
* 6. GCC
**************************

то, если я выберем 1 например:

[GNU-GCC]how@ubuntu-sw:~/Work/.env
-> sel_env 
**************************
* Switch Compile env:
* 1. ARMCC 2.2 Build[616]
* 2. ARMCC 3.1 Build[1055]
* 3. ARMCC 4.1 Build[894]
* 4. ARMCC 5.0 Build[94]
* 5. ARM-Linux-GUNEABI-GCC
* 6. GCC
**************************
1
ARM/Thumb C/C++ Compiler, RVCT2.2 [Build 616]
CC -> 
Compile Firmware and Boot Core
[ARM2.2B616]how@ubuntu-sw:~/Work/.env
->

надеюсь, что этот вариант поможет вам, когда вы работаете над несколькими компиляторами. Если вы думаете, что этот способ слишком завышен, я предлагаю вам также использовать ссылку на символы, а так как ваша установка вашего компилятора в /opt, обычно эта папка /opt должна /opt в определенном вами пути. но вам нужно как-то работать как g++_withyour_version, тогда вы можете создать ссылку на символ, ln -s/opt/gcc-4.8.2/opt/gcc, тогда вы можете набрать gcc для версии 4.8.2

  • 0
    вау, так много работы? Черт! Завтра я, наверное, протестирую, так как весь процесс занимает слишком много времени (установка). Я не хочу выбирать компилятор, я хочу только новый.
  • 0
    или обычно вы можете использовать символ как, потому что вы устанавливаете компилятор в /opt , обычно эта папка /opt должна /opt в вашем системном пути. но вам нужно как-то запустить g++_withyour_version , затем вы можете создать символьную ссылку, ln -s /opt/gcc-4.8.2 /opt/gcc , тогда вы можете ввести только gcc для версии 4.8.2
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню