CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录《第二部分:编译,安装,测试》

前言

GCC(GNU Compiler Collection,GNU编译器合集)是linux以及其他类UNIX平台上进行开源项目,软件开发等必不可少的工具链组成之一(工具链的其他成员包括 binutils,Glibc,libstdc++ 等)


外,对于程序员以及系统管理员而言,经常需要从软件的源码手动编译安装,而不论是configure脚本,还是make工具/makefile文件,最终
都需要调用gcc(或者其它编译器)来进行实际的编译工作,因此,经常需要使用gcc的新版特性,并且与旧版gcc共存,根据实际的需求进行调用。


在本篇博文中,我们以centos6.5 32位 系统上已安装的旧版gcc二进制可执行文件以及Glibc C库为基础,从网上下载最新版的gcc源码包手动编译安装,进行简单的测试,并且与make工具整合,从configure脚本进行参数传递,优化编译等。

整个过程简单明了,图文代码并茂,希望能起到抛砖引玉的作用,激发广大爱好者编程与学习的热情。

《编译,安装与测试》

前面我们多次提到:gcc应该在单独的目录里面进行配置和编译,不要让生成的中间文件污染了源码目录,除非你决定在整个安装过程结束后,删除源码目录和编译目录。

我们使用单独的编译目录 compile-dir 来存储经由 make 命令编译生成的二进制文件,然后用make install 命令,将这些文件复制到最终的安装目录:

/usr/local/new-exec-gcc-4.9.1

首先,进入编译目录,在该目录下,以绝对路径的形式调用gcc源码目录下的configure脚本文件,在其后面指定编译参数,其中:

--prefix=/usr/local/new-exec-gcc-4.9.1/   就是上面讲到的最终安装路径。


--enable-bootstrap  这里引用网上一些文献对该参数的解释:用第一次编译生成的程序进行第二次编译,然后用再次生成的程序进行第三次编译,并且检查比较第二次和第三次结果的正确性,也就是进行冗余的编译检查工作。

非交叉编译环境下,默认已经将该值设为 enable,可以不用显示指定;交叉编译环境下,需要显示将其值设为 disable。


--enable-checking=release  以软件发布版的标准来对编译时生成的代码进行一致性检查;设置该选项为 enable并不会改变编译器生成的二进制结果,但是会导致编译的时间增加;该选项仅支持gcc编译器;

总体而言,对于上面这个选项,机器的硬件配置较低,以及不愿等待太久编译时间的童鞋,可以设置为 disable;但是这会增加未预期的错误风险,所以应该慎用。

可以同时设置 --disable-bootstrap 与  --disable-checking,这对编译过程的提速很有帮助。

--enable-threads=posix   顾名思义,启用posix标准的线程支持

要让程序能在符合POSIX规范的linux发布版上正确运行,就应该启用该选项,取决于宿主或目标操作系统的类型,其它可用值有:aix,dec,solaris,win32等,如果你是其它的类UNIX系统,就需要设置相应的值。

--enable-languages=c,c++ 
 支持的高级语言类型和运行时库,可以设置的所有语言包括 ada,c,c++,Fortran,java,objc,obj-c++,GO 等语言。这里只开启了c和c++,因为支持的语言越多,就需要安装越多的相应静态与动态库,还有五花八门的依赖库,这会让管理变得困难,体积也会变得庞大。

--disable-multilib    很多文章对这个参数的解释让人摸不着头脑。简单的讲,如果你的操作系统是32位,默认就已经设置为 disable,这意味着gcc仅能生成32位的可执行程序;如果你的操作系统是64位,默认就已经设置为 enable,这意味着用gcc编译其它源文件时可以通过 -m32 选项来决定是否生成32位机器代码。

如果在64位系统上,要禁止生成32位代码, 设置 --disable-multilib。

--enable-gather-detailed-mem-stats

允许收集详细的内存使用信息,如果设置该参数为 enable,则将来编译好的gcc可执行程序,可以通过 -fmem-report 选项来输出编译其它程序时的实时内存使用情况。

--with-long-double-128 

指定 long double 类型为128位(16字节!);设置为 without,则 long double类型将为64位(8字节),这将与普通的 double 类型一样。

基于 Glib 2.4以上版本编译时,默认已经是128位。

[[email protected] 桌面]# cd /extracted-src-dir/gcc-4.9.1/
[root[email protected] gcc-4.9.1]# cd /compile-dir/
[[email protected] compile-dir]# pwd
/compile-dir
[[email protected] compile-dir]# /extracted-src-dir/gcc-4.9.1/configure --prefix=/usr/local/new-exec-gcc-4.9.1/ --enable-bootstrap --enable-checking=release --enable-threads=posix --enable-languages=c,c++ --enable-gather-detailed-mem-stats -with-long-double-128

如果以上面给出的参数集来运行configure脚本,会在 compile-dir 目录下生成

config.log,config.status,Makefile,serdep.tmp四个文件,用gedit或者其它文本编辑器打开 config.log,以 error 为关键字符串,搜索configure检测到的潜在配置错误和警告,这对后面的make阶段能否正常编译至关重要:如果没有任何与error相关的警告信息,那么就认为可以执行 make 命令。


在当前工作目录下,执行 make 命令来启动编译进程,整个编译过程花费的时间很大程度上取决于你的系统硬件配置,以及指定给configure脚本的参数,

我的硬件配置如下,大概也花了近40分钟才编译完成:

CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录《第二部分:编译,安装,测试》

时间: 2024-10-14 22:34:26

CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录《第二部分:编译,安装,测试》的相关文章

CentOS6.5 从源码编译安装 GCC-4.9.1 全程实录,包含测试使用《图文教程》

前言 GCC(GNU Compiler Collection,GNU编译器合集)是linux以及其他类UNIX平台上进行开源项目,软件开发等必不可少的工具链组成之一(工具链的其他成员包括 binutils,Glibc,libstdc++ 等) 另外,对于程序员以及系统管理员而言,经常需要从软件的源码手动编译安装,而不论是configure脚本,还是make工具/makefile文件,最终都需要调用gcc(或者其它编译器)来进行实际的编译工作,因此,经常需要使用gcc的新版特性,并且与旧版gcc共

在CentOS6上使用源码编译LAMP平台

最近在学习重要的Web服务,当然也就少不了很重要的httpd和php.而动态网站必定又会使用数据库如mysql之类的,那么,今天就总结一下最近做的LAMP平台编译实验.具体过程如下. 实验名:在CentOS6上使用源码编译LAMP平台 实验环境:CentOS6.5,安装时选择了使用最多的两个开发包组. 使用系统默认基本yum源+epel6源(aliyun: http://mirrors.aliyun.com/repo/epel-6.repo) 使用源码包:httpd-2.4.9 ;二进制安装包m

Linux CentOS6.5下 源码编译安装MySQL 5.6.16【给力详细教程】

一.编译安装MySQL前的准备工作 安装编译源码所需的工具和库 yum install gcc gcc-c++ ncurses-devel perl 安装cmake,从http://www.cmake.org下载源码并编译安装 wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gz tar -xzvf cmake-2.8.10.2.tar.gz cd cmake-2.8.10.2 ./bootstrap ; make ; make i

centos6.6 从源码编译安装mysql5.7.5

1. 安装相关工具 # yum -y install gcc-c++ ncurses-devel cmake make perl \ gcc autoconf automake zlib libxml libgcrypt libtool bison 2. 清理环境 检查boost版本: # rpm -qa boost* 卸载boost-*等库: # yum -y remove boost-* 3. mysql源码包下载 mysql5.7源码下载: http://mirrors.sohu.com/

CentOS6.5下源码编译安装httpd2.4.23

1.安装环境为CentOS6.5,64位 [[email protected] app]# uname -r 2.6.32-504.30.3.el6.x86_64 [[email protected] app]# cat /etc/redhat-release  CentOS release 6.5 (Final) [[email protected] app]# 2.官网上下载源码包 wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/

linux CentOS6.6 i386 源码 cmake 编译mysql 5.5

编译安装MySQL-5.5 搜索下载http://down.51cto.com/ 编译安装MySQL前的准备工作 安装编译源码所需的工具和库 [纯净CentOS 6.6 i386] yum install gcc gcc-c++ ncurses-devel perl wget readline-devel zlib-devel openssl-dev cmake [CMAKE] 指定安装文件的安装路径时常用的选项: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql

2-14 MySQL初步认识,及CentOS6.8环境,源码方式安装MySQL

什么是数据库: 存放数据的仓库RDBMS-->(Relational Database Management System) 关系型数据库管理系统DBMS--->(Database Managerment System) 数据库管理系统 数据库分类:1. 关系型数据库2. 非关系型数据库常用关系型数据库:Oracle,MySQL,MariaDB,SQL Server,Access,PostgreSQL,DB2,Informix,SybasePostgreSQL 自由的对象-关系数据库服务器(数

centos6.5 64 源码安装redis服务,建立可远程连接的redis数据库

安装环境:centos6.5 64位 使用的包:redis-2.8.19.tar.gz  tcl8.6.3-src.tar.gz 包的下载链接:http://downloads.sourceforge.net/tcl/tcl8.6.3-src.tar.gz http://download.redis.io/releases/redis-2.8.19.tar.gz 本次安装的目录/home/hadoop/redis为任意目录 代码实现: 1,安装需要的支持环境 su root cd /home/h

centos6.5下源码安装mysql密码修改

Centos下源码安装mysql密码破解方法: 方法一:首先停止mysql服务,: /etc/init.d/mysqldstop 停止mysql ps -ef |grep mysql 查看mysql是否关闭 然后以跳过权限方式后台启动 /usr/local/mysql/bin/mysqld_safe--skip-grant-tables --user=mysql & /usr/local/mysql/bin/mysql进入mysql 或者执行mysql回车进入mysql,然后修改密码. 修改My