将 Ubuntu 12.04 上的 GCC 4.6.3 升级到 4.8.2,并切换到新的编译器
Upgrade GCC 4.6.3 on Ubuntu 12.04 to 4.8.2 with swtiching to new compiler
我想从 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/目录中,因此您必须从那里使用它。
我的问题是(如果您认为上述步骤是错误的,请说明):
- 现在有没有更简单的方法可以做到这一点?
- 如何执行最后一步?我的意思是,我想我可以做/opt/g++-4.8 或有些东西,但我必须做什么才能让我的系统看到使用 g++ 编译时的编译器?
相关问题。
我只是展示一个想法,如何通过在shell中切换它们来适应不同的编译器
我根据我的安装为您提供解决方案,前提是您已经知道您的最新g++
和以前版本的g++
在哪里。我想这样做:
#I create some color for $PS1 use
black="[ 33[1;30m]"
red="[ 33[1;31m]"
green="[ 33[1;32m]"
yellow="[ 33[1;33m]"
blue="[ 33[1;34m]"
purple="[ 33[1;35m]"
cyan="[ 33[1;36m]"
white="[ 33[1;37m]"
coloroff="[ 33[0m]"
highlight="[ 33[1m]"
underline="[ 33[4m]"
twinkle="[ 33[5m]"
reverse="[ 33[7m]"
unvisible="[ 33[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="[ 33]2;u@h:wa]$red[GNU-GCC]$blueu@h:$coloroffwn-> "
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="[ 33]2;u@h:wa]$red[ARM-Linux-GCC]$blueu@h:$coloroffwn-> "
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="[ 33]2;u@h:wa]$red[ARM2.2B616]$blueu@h:$coloroffwn-> "
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="[ 33]2;u@h:wa]$red[ARM3.1B1055]$blueu@h:$coloroffwn-> "
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="[ 33]2;u@h:wa]$red[ARM4.1B894]$blueu@h:$coloroffwn-> "
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="[ 33]2;u@h:wa]$red[ARM5.0B94]$blueu@h:$coloroffwn-> "
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 文件,或在$HOME
.bashrc
文件中添加此操作,然后键入 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
文件夹应该在你的系统定义路径中。但是你需要以某种方式像g++_withyour_version
一样运行,然后你可以创建一个符号链接,ln -s /opt/gcc-4.8.2 /opt/gcc
,然后,你只能为4.8.2版本键入gcc
相关文章:
- C/C++编译器通常会删除重复的库吗
- 无法安装 R 包 "nloptr"(Ubuntu 16.04 上的 R3.6.2) - C++编译器问题
- 如何在 ubuntu 20.04 中安装编译器 g++-4.8.5
- 如何在 Ubuntu 上安装 Rose 编译器?
- 如何在Ubuntu中不加编译器硬化的情况下编译宝石
- 在 Ubuntu OS 中的 Matlab 2017a 上切换编译器
- Ubuntu C++ 编译器错误: g++: 错误: 文件.cpp: 没有这样的文件或目录
- 在Ubuntu上安装G 编译器13.04
- 为什么局部变量在 ubuntu Linux 中 c++ 的 g++ 编译器中初始化为 0
- 将 Ubuntu 12.04 上的 GCC 4.6.3 升级到 4.8.2,并切换到新的编译器
- 如何在 64 位 Ubuntu 系统上安装简单的英特尔 C/C++ 编译器
- C++ Ubuntu 12.04 的编译器/SDK - Netbeans
- 在 Ubuntu 上使用 g++ 编译器运行程序
- Rcpp 库无法在 Ubuntu 上构建(找不到编译器)
- 如何在ubuntu上将gcc编译器改为c++11
- 为什么 c++ 可以包含 <stdio.h> 并调用 printf 方法,即 c(platform:ubuntu 14.04 编译器:gcc 4.8.4)
- 使用g++编译器(Ubuntu)将Allegro库链接到c++应用程序
- 在ubuntu中为nsighteclipse6.5添加c++编译器、链接器标志
- 下载什么编译器,如何下载编译器,以及如何将编译器添加到Qt?(ubuntu 12.04)
- UBUNTU C++编译器找不到头文件