Gcc 安装过程中部分配置
Gcc 安装过程中部分配置详解
全文参考《have fun with Gcc》一文,如有需要请联系原作者prolj@163.com
解压gcc源码后,需要进行configure,这时候一般命令如下:
srcdir/configure [options] [target]
你可以运行以下命令获得自己需要的options。
configure –help
Target默认是自己的本机环境,如果是交叉编译器,就需要指定这个参数了
--target=target
这个target一半是你m68k-coff,mk68k-linux-elf这样的格式,其中mk68-linux-elf是用在嵌入式Linux中的格式,我曾经使用过mips-linux-bin的格式,一般是指定CPU类型,而进行的文件格式,甚至OS环境。
同时还有一些附加的options,比如:
--prefix=dir 这个是指定你安装的目录,如果需要安装多个版本的gcc时,非常有用
--with-gmp 是GNU多精度库
--with-mpfr MPFR和GMP是配合,编译GCC的时候同时需要GMP和MPFR。
--with-ppl 是启用Graphite循环优化
--with-cloog 是和上边配合的一个参数
--enable-language=c++ 用逗号隔开,可以指定编译支持的语言,不在列表的语言不支持,这样可以减少编译时间
--disable-bootstrap 如果你确定自己的代码没问题,不用编译3遍,或者是你是gcc代码的调试者,不想等待那漫长的编译时间,可以把bootstrap禁用,这样就只编译一遍。
如果需要构建交叉编译器,那么—host 和 –target可能是必须的
还有一些构建的选项
一般人使用的make选项,这是使用单线程串行编译,一般需要几个小时。这个时候为了加快编译速度可以使用
make –jN N是系统支持的线程数
这个时候建议首先查看CPU的个数(cat /proc/cpuinfo),和CPU每个核心支持的线程数,可以加快编译。
说一点构建的事情,构建 GCC 要编译 3 遍,每一遍都构建一套完整的 GCC 二进制文件。如果已经有 binutils 就不再构建,如果没有,需要先构建 binutils ,这个需要把 binutils 的代码放在 GCC 代码的顶层目录中,并在 configure的时候指定。构建 GCC 的时候有个叫作 bootstrap 的名词,意思就是编译一遍并且编译出来二进制文件。
比较第二遍和和第三遍的二进制文件是否相同。因为第一遍用本机的编译器构建出来一个 GCC ,先叫其 GCC1 ,这个 GCC1 不知道是否正确,再用 GCC1 编译出来 GCC2,如果能编译出来 GCC2 就说明 GCC1 是可以用的,GCC2 便是我们想得到“最终版本”了,可以还要用 GCC2 再去构建GCC3 ,然后比较 GCC2 和 GCC3 是否完全一样,这是为了防止有人在编译器里面放后门。
为第三遍的二进制文件构建运行时库。
如果硬盘空间实在不足,可以使用make bootstrap-lean
来删除第一遍和第二遍不用的obj
当然,你也可是使用以下指令来增加编译次数。
make boostarp4
Gcc 安装过程中部分配置的更多相关文章
- SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法
操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...
- mysql-5.5.28源码安装过程中错误总结
介绍一下关于mysql-5.5.28源码安装过程中几大错误总结,希望此文章对各位同学有所帮助.系统centOS 6.3 mini (没有任何编译环境)预编译环境首先装了众所周知的 cmake(yum ...
- ltib安装过程中遇到好多问题,从网上转来的好多份总结
最近调试MPC5125的板子,第一步LTIB都装不过去,挫败感十足. LTIB的安装镜像来自于freescale的ltib-mpc5121ads-200906,是用于Ubuntu 10版本之前的,现在 ...
- node 在centos 6.5 上 安装过程中出现/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found问题的解决
node 在centos 6.5 上 安装过程中出现/usr/lib64/libstdc++.so.6: version 'GLIBCXX_3.4.19' not found问题的解决 在linux ...
- 用友ERP-U8最新破解(再次更新版本,附安装过程中的解决办法)
新版用友u8.70下载地址:http://ftp.shangyuchem.com/应用软件/用友ERP-U8管理软件(8.70版).rar 准备好安装环境,因为需要SQLSERVER和IIS支持,而个 ...
- Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具
1. VMware的相关知识 (1)建议的VMware的配置: CPU 主频1GHz以上 内存 1GB以上 硬盘 分区空闲空间8GB以上 (2)VMware创建快照 快照的作用是保存虚拟机的现有状态, ...
- Ubantu16.4的安装过程以及基本配置
Ubantu16.4的安装过程以及基本配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入高级运维工程师之路:598432640 其实很早以前就听朋友说ubantu这怎么好 ...
- mysql安装过程中出现的错误问题解决方案
最近在学Django,因为与数据库相关,所以我下载并安装了MySQL,安装的过程真的是一把辛酸泪啊.安装过后,查看是否可以使用,出现了cann't connect to mysql server这个错 ...
- oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序
15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...
随机推荐
- C# 中使用RegisterShellHookWindow Hook窗体创建
前言:最近在写一个桌面程序时需要全局HOOK 窗体的创建,但是在.net中SetWindowsHookEx()只可实现键盘鼠标的全局钩子,其余的全局钩子都需要使用DLL.难道就没有解决办法了么?经过长 ...
- 六十二:CSRF攻击与防御之系统准备之注册功能
CSRF攻击原理: 配置信息 import osSQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'S ...
- DELPHI 通用的数据记录复制过程
//表名,关键字段名,单条内容的SQL语句,产生新记录的值 function Tfrmdmmain.CopyTbale(const tablename, fileldname, swhere, new ...
- centos 7安装python3及相关模块
一.python3安装 1.cd /usr/bin 2.mv python python.bak 3.https://www.python.org/ftp/python/网站选择合适的版本 4.wge ...
- spring @valid 注解
用于验证注解是否符合要求,直接加在变量之前,在变量中添加验证信息的要求,当不符合要求时就会在方法中返回message 的错误提示信息. @PostMapping public User create ...
- 如何为Redis中list中的项设置过期时间
问题 两种解决方法 有序集合 多个集合以及TTL Redis是一个伟大的工具,用来在内存中存储列表是很合适的. 不过,如果你想要快速搜索列表,同时需要让列表中每项都在一定时间后过期,应该怎么做呢? 首 ...
- 【VS开发】关于SEH的简单总结
尽管以前写过一篇SEH相关的文章<关于SEH的简单总结>, 但那真的只是皮毛,一直对Windows异常处理的原理似懂非懂, 看了下面的文章 ,一切都豁然开朗. 1997年文章,Windo ...
- Nexus2 yum插件RCE漏洞(CVE-2019-5475)
1.漏洞简介: 安全研究员Christian August Holm Hansen在Nexus Repository Manager 2.X中披露了一个远程命令执行漏洞. 该漏洞默认具有部署权限帐户. ...
- spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼
GITHUB: https://github.com/lin1270/spring_boot_sql2code 會自動生成model.mapper.service.controller. 代碼使用No ...
- 【转贴】SQL Server中关于跟踪(Trace)那点事
SQL Server中关于跟踪(Trace)那点事 https://www.cnblogs.com/zhijianliutang/p/4113911.html 作者很牛B.. 前言 一提到跟踪俩字,很 ...