根据gcc build instructions,您可以与构建gcc(以及gmp,mpc等)同时构建binutils .
这是该页面所说的内容:
如果您还打算构建binutils(升级现有安装或用于代替OS的相应工具),请将binutils发行版解压缩到同一目录或单独的目录中 . 在后一种情况下,添加符号链接到您打算与编译器(bfd,binutils,gas,gprof,ld,opcodes,...)一起构建的binutils的任何组件到包含GCC源的目录 . 同样,GMP,MPFR和MPC库可以与GCC一起自动构建 . 将GMP,MPFR和/或MPC源代码发行版解压缩到包含GCC源的目录中,并将其目录重命名为gmp,mpfr和mpc(或使用具有相同名称的符号链接) .
这适用于gmp,mpc,mpfr,但我似乎无法 Build 所有binutils . 我也无法弄清楚如何从binutils构建新的黄金链接器 . 有问题的版本是gcc-4.4.2和binutils-2.20 .
一步一步的指导会很棒(对我来说,也适用于遇到这个问题的其他人) .
3 回答
这应该仍然可以支持,因为它通常用于构建交叉编译器 .
事实上,我刚刚使用gcc 4.6.0和binutils 2.21(在适当的版本中使用gmp,mpc和mpfr),以下似乎工作正常:
获取你要构建的东西的所有档案(gcc-4.6.0.tar.bz2,binutils-2.21.tar.bz2等)到一个新的目录,例如
src
在这个目录中解压缩所有这些,所以你最终得到
gcc-4.6.0/
binutils-2.21/
gmp-5.0.2/
并且更多地坐在一起cd gcc-4.6.0
和符号链接gmp,mpc和mpfr目录,但没有链接中的版本号,例如:make -j4
左右来并行获取一些构建,因为它需要一段时间):将目标添加到您的路径(如果它还没有)(如果这是在
/etc/ld.so.conf
中指定的目标之外,可能是lib目录,如make install
步骤中有关安装库的消息中所述),并且所有内容都应该启动并运行这个新版本 .一旦你打开一个新的shell,你可能需要检查一下你是否正在使用这个已安装的版本:
和
..以及该版本与您期望的一样:
和
..以及(当然)测试已安装的版本使用一些简单的示例构建可执行文件,然后再放宽代码库:)
编辑:下面的注释包含一些已知可以协同工作的版本集 . 并非所有组合都有效,因此您可能需要对所提到的不同组合进行一些试验和错误!
很久以后编辑:gdb也可以包含在这个版本中(再次需要兼容的组件版本 - 请参阅注释) . 以类似的方式在binutils之后添加这个作为最后一件事,使用
for f in ../gdb-8.1.1/* ; do ln -s "${f}" ; done
并且构建将自动拾取它 .你想要做的是一个"combined tree"或"in-tree binutils" build . 您可以找到有关如何继续here和there的文档 .
我总是分开建造一切 . 在构建并安装binutils之后,只要为每个配置脚本提供相同的
--target
和--prefix
选项,gcc就可以正常构建:binutils的:
然后添加路径(如有必要):
并构建gcc:
然后在必要时构建你的libc和gcc的其余部分(也许是调试器!) .