免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1222 | 回复: 0
打印 上一主题 下一主题

手动编译安装GCC [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-14 16:24 |只看该作者 |倒序浏览

前言
最近在构建一套开发环境,对GCC有特殊的要求,使用RPM包安装 的GCC已经不能满足要求了,因此决定手动编译安装GCC。
原本想走一些捷径,希望RPM包安装也可以达到手动安装的灵活性, 后来发现此路不通;接下来又想找网络上是否提供编译好的tar包下 载,解压后就可直接运行,后来发现GCC平台依赖性很强,此路亦 不通。
于是只能选择源代码编译和安装GCC了。
第一步:准备工作
我是从一台最小化安装CentOS 5的Linux PC上开始安装GCC的, 其实如果你有一台安装了开发环境的Linux PC,则可以跳过这一 步。
首先,机器上必须安装好GCC,才能够从源代码编译和安装新的GCC, 因此我安装了下列RPM包作为开发环境。(注意,我的系统是 CentOS 5,其他平台可以选择相关的开发工具包)。
  • rpm -ivh cpp-4.1.1-52.el5.i386.rpm
  • rpm -ivh glibc-headers-2.5-12.i386.rpm
  • rpm -ivh glibc-devel-2.5-12.i386.rpm
  • rpm -ivh libgomp-4.1.1-52.el5.i386.rpm
  • rpm -ivh gcc-4.1.1-52.el5.i386.rpm
  • rpm -ivh libstdc++-devel-4.1.1-52.el5.i386.rpm
  • rpm -ivh gcc-c++-4.1.1-52.el5.i386.rpm
  • rpm -ivh zlib-devel-1.2.3-3.i386.rpm
    安装完以上的工具包后,系统中gcc/g++命令就可用了。
    GCC的tar包里面提供了test suite,编译完成后可以执行这些测试, 用以分析编译是否成功。因此系统中需要安装另外的工具包:
  • rpm -ivh expect-5.43.0-5.1.i386.rpm
  • rpm -ivh dejagnu-1.4.4-5.1.noarch.rpm
    安装完以上工具包后,系统中runtest命令就可以用了。
    第二步:configure和make
    configure
    configure是个很关键的步骤,如果遇到编译错误,首先应该想到 可能是configure的问题,接下来想到可能是系统中缺少相关的软 件包,编译过程中找不到头文件等。
    我使用的编译参数是:
    ./configure --prefix=/opt/gcc-x.y.z --enable-shared \
    --enable-threads=posix --enable-clocale=gnu \
    --enable-__cxa_atexit --disable-checking \
    --enable--long-long
    依次解释:
  • --prefix=/opt/gcc-x.y.z 是用来指定安装目录,注意,该目录尽量不要与源代码是同一目录, 也不能是源代码的子目录。
  • --enable-shared 创建共享库
  • --enable-threads=posix 启用线程支持,在某些平台上是默认值。它对Obj-C的库以及C++、 Java的异常处理有影响。
  • --enable-clocale=gnu 本参数确保C++库在任何情况下都使用正确的locale 模块。如果配置脚本查找到de_DE这个locale,它就会 使用正确的gnu模块。然而,有的人没有安装de_DE,就有可能创建 出ABI不兼容的C++库文件,这是因为错误的使用了generic作为 locale模块。
  • --enable-__cxa_atexit 使用 __cxa_atexit来代替 atexit,用来记录本地和全局的 C++ destructors,这是为了完全符合标准的规定。它还会影响到C++ ABI, 因此生成的C++共享库,在其他的Linux发行版上也能使用。
  • --disable-checking 为节省编译时间,我们使用此选项,对结果没有影响。
  • --enable--long-long 支持long long数据类型,某些开源项目使用了该数据类型。
    完成configure工作后,会自动生成Makefile,接下来就可以开始漫长 的编译工作了。
    如果configure的参数把你绕得很晕, 传递尽量少的参数给configure,默认 的参数在大多数情况下是适用的。
    make
    使用如下命令开始编译:
    make bootstrap
    不同配置的机器,编译时间的长短不一样,相同的是,都是极其漫长的 过程。
    第三步:执行测试(可选)
    GCC的tar包里面提供了test suite,帮助进行测试,用来分析编译是否 成功。
    执行如下命令开始测试:
    make -k check > check.log
    同样,这是个漫长的过程。
    测试完成后,可以访问
    http://gcc.gnu.org/buildstat.html
    ,对比测试结果。
    第四步:安装
    如果没有错误,接下来就可以开始安装了:
    make install
    参考

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19538/showart_1797100.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP