如果可以通过apt来安装的话,尽量不要手工编译了,手工编译是最后的选择。用apt安装,只需要输入一条命令:

sudo apt-get install gcc

手工编译的话,gcc和其他软件包存在如下的依赖关系:



因此各个软件包的安装顺序是m4 --> gmp --> mpfr --> mpc --> gcc。编译之前,请先下载各软件包的源码压缩包。

编译

各个软件包的编译步骤大同小异,这里以m4为例。假设下载的m4文件名为m4-1.4.16.tar.gz,存放在~/gcc_depend目录下。先进入到存放目录,解压:

cd ~/gcc_depend
tar zxvf m4-1.4.16.tar.gz

我们把m4安装到/usr/local目录下。先创建目录,并运行配置文件,生成Makefile

sudo mkdir /usr/local/m4-1.4.16 # 创建安装目录
cd /usr/local/m4-1.4.16 # 切换到安装目录
sudo ~/gcc_depend/m4-1.4.16/configure --prefix=/usr/local/m4-1.4.16 # 通过configure脚本来生成Makefile

编译,这一步在安装目录下完成:

sudo make
sudo make install

编译完成后,检查是否有误:

sudo make check # 编译和运行测试用例

如果所有测试用例都pass了,说明编译成功。

其他软件包的编译过程大致如此,总结为如下几步:

  • 1、解压源码
  • 2、创建安装目录,并切换到安装目录,通过configure脚本来生成Makefile
  • 3、编译
  • 4、检查测试用例

注意事项

  • 1、安装mpfr时,可能会提示找不到gmp,这个时候要在--prefix=安装目录后再加上--with-gmp=/usr/local/gmp-xxx,其中gmp-xxx为gmp安装目录;安装mpc时可能会有同样的问题,也要这样处理。
  • 2、 每次安装完一个包,要把安装目录下的lib目录添加到环境变量LD_LIBRARY_PATH中。

最新文章

  1. C++的性能C#的产能?! - .Net Native 系列《一》:.NET Native安装和配置
  2. 多个 App 间启动
  3. bk.
  4. jquery中各个事件执行顺序如下:
  5. 实现类似微信的延迟加载的Fragment——LazyFragment
  6. Linux内核与根文件系统的关系
  7. javascript第二遍基础学习笔记(二)
  8. JavaScript中模块“写法”
  9. 基于visual Studio2013解决C语言竞赛题之1068指针数组
  10. Jmeter的逻辑控制器——Controller
  11. 用css3的cursor:zoom-in/zoom-out实现微博看图片放大镜效果
  12. DotNetCore跨平台~认识环境和环境变量
  13. Python开发【第十六篇】:AJAX全套(转)
  14. 构建一个 预装 pm2 的 node 项目 docker 底包
  15. 问题: 揭秘Angualr2 书上问卷调查
  16. Unity中资源打包成Assetsbundle的资料整理
  17. django CBV和FBV写法总结
  18. day07 eclipse使用本地 库文件 访问HDFS
  19. Spring中的@Transactional 放在 类级别 和 方法级别 上有什么不同?
  20. 1、javaweb学习之配置文件web.xml

热门文章

  1. iOS开发自定义字体之静态字体
  2. es之java插入优化(批量插入)
  3. Python学习笔记(二)Sublime Text 3 安装Package Control
  4. Ecipse代码调试
  5. Understanding RequireJS for Effective JavaScript Module Loading
  6. 有关OI的思维导图
  7. Vue知识整理4:v-html标签
  8. delphi自定义事件处理
  9. vts测试流程
  10. Python笔记(三十)_python标准异常总结