Linux安装编译GCC
来源:互联网 发布:华安期货软件 编辑:程序博客网 时间:2024/05/21 17:52
最近遇到在Linux下使用C++标准正则库报错,google发现是与gcc版本的问题,于是只好重新安装编译新的gcc,但是安装过程没有想象的那么简单,以下是遇到的各种坑:
注意:网上很多垃圾教程,很是误导人,就严格按照下面一步步来,不要试来试去,陷入各种奇怪错误陷阱,坑自己。
1)下载gcc源码,不多讲。
2)root权限切换到/opt目录下
cd /opt解压gcc源码包到/opt目录下
tar xzvf gcc-4.8.2.tar.gzcd gcc-4.8.2
3)******下载依赖包gmp,mpfr,mpc
- 分别下载安装,很麻烦,很作死,不多讲。
- 执行下面的脚本自动下载关联依赖库
./contrib/download_prerequisites
4)****新建一个文件,用来编译
一定要不要在那个gcc文件下直接编译,否则会报错,作死妥妥的
cd ..mkdir objdir
mkdir /usr/local/gcc-4.9.1
mkdir /usr/local/gcc
5)编译gcc
cd objdir
../gcc-4.9.1/configure --prefix=/usr/local/gcc-4.9.1 --exec-prefix=/usr/local/gcc --enable-languages=c,c++
make #很慢,大概要编译一个多小时6)*****安装gcc
make install
以上gcc就算是安装完了,但是要正常使用,还需要一些配置,一下配置方法引用自http://ilovers.sinaapp.com/article/centos%E4%B8%8B%E5%AE%89%E8%A3%85gcc-481:
make install 之后,会发现 /user/local/gcc 下放置的是 bin + lib 文件,/usr/local/gcc-4.8.1 下放置的是 include 文件。上面完事之后,就是删除原有的 gcc,替换成现在的最新版本;不过为了保险起见,还是将原有的 gcc 换成其他名字的好,比如 gcc-4.4.7/g++-4.4.7。关于后续的工作其实还有一些,主要是环境变量的设置,以及为 c++ 做的一些设置。# 将 gcc/g++ 改名$ mv /usr/bin/gcc /usr/bin/gcc-4.4.7$ mv /usr/bin/g++ /usr/bin/g++-4.4.7# 环境变量的设置$ export PATH=/usr/local/gcc/bin:$PATH # 可以让 us 使用最新的 gcc/g++;$ export LD_LIBRARY_PATH=/usr/local/lib # 这个可能不是必须的,对于 me 来说是必须的,设置的是 lib 的搜索 path;$ ln -s /usr/local/gcc-4.8.1/include/c++/4.8.1 /usr/include/c++/4.8.1 # 在 include/c++ 文件夹下添加最新的 c++ 4.8.1 版本(这是个符号链接);$ export C_INCLUDE_PATH=/usr/include # 这个是多余的,实际上不用设置;$ export CPLUS_INCLUDE_PATH=/usr/include/c++/4.8.1:/usr/include/c++/4.8.1/x86_64-unknown-linux-gnu # c++ include 搜索目录,这里有两个,使用的 : 隔开;有个问题是,在 shell 中通过 export 设置的环境变量不是持久有效的,在用户退出登录之后就不再有效,可以将 export 的环境变量在用户主目录下的 .bash_profile 中设置,对用户来说,是持久有效的;如果想对对所有的用户有效,需要 root 在 /etc/profile 中设置;安装可能出现的问题以及方案configure 步骤提示找不到 gmp、mpfr 等 lib 或是 header;缺少的要安装,可以使用自带的包管理器,比如 yum install gmp,也可以从官网下载安装,下载地址:GMP:http://gmplib.orgMPFR:http://www.mpfr.orgMPC:http://www.multiprecison.orgISL+CLooG:ftp://gcc.gnu.org/pub/gcc/infrastructureISL 明明已经安装了,然而 configure 检测 no !设置环境变量 $ export LD_LIBRARY_PATH=/usr/local/lib (这是 isl lib 所在的目录,当然 u 的可能不一样);stubs-32.h 找不到,安装 32 位的 glibc-devel;编译 c++ 发现找不到 c++config.h;本来 c++ include 目录是 /usr/include/c++/4.8.1,c++config.h 位于其下的 x86_64-unknown-linux-gnu (这个文件夹跟平台有关)下,所以可以在 CPLUS_INCLUDE_PATH 中设置;环境变量设置只在 shell 中有效,退出之后就不再有效;修改 ~/.bash_profile 文件,在其中添加环境变量(需要退出登陆有效);测试编译一下 hello.cpp,使用了 c++11 的一些特性,比如初始化方式,类型推断以及新的 for 用法,$ g++ -std=c++11 hello.cpp :#include <iostream>#include <vector>#include <algorithm>using namespace std; int main(){ vector<int> v = {2, 4, 8, 3, 5, 6, 1, 7, 10, 9}; sort(v.begin(), v.end()); for(auto i: v) cout << i << " "; cout << endl; return 0;}以上。
0 0
- Linux安装编译GCC
- linux下编译安装gcc
- linux下编译安装gcc
- Linux 编译安装 GCC 4.8
- Linux 编译安装 GCC 4.9
- Linux下安装gcc交叉编译工具
- 安装交叉编译工具arm-linux-gcc
- 安装交叉编译环境arm-linux-gcc
- arm-linux-gcc编译工具的安装
- 交叉编译工具 arm-linux-gcc 安装
- 交叉编译工具 arm-linux-gcc 安装
- Ubuntu linux-gcc安装与编译
- arm-linux-gcc 安装(非编译)
- Linux编译安装GCC-4.9.0
- Linux编译安装GCC-4.9.0
- Linux编译安装GCC-4.9.0
- Linux下编译安装GCC 4.9.2
- Linux下用gcc编译安装程序
- centos5.6升级gcc4.8.2
- 一些SQL问题
- iOS学习爬坑记录18:ios获得设备cpu类型
- JAVA Socket
- 蓝牙协议栈
- Linux安装编译GCC
- MYSQL分页存储过程及事务处理
- 使用ElasticSearch+LogStash+Kibana+Redis搭建日志管理服务
- android:excludeFromRecents="true"
- iOS代码组织和架构总结
- Http编程之HttpClient
- Android Support v4、v7、v13的区别和应用场景
- iOS UILabel根据内容动态计算高度
- Xcode_单元测试