豫ICP备17040950号-2

第二次编译gcc报错

../../gcc-4.8.2/gcc/config/linux.h:111:10: error: attempt to use poisoned “STANDARD_INCLUDE_DIR”
#undef STANDARD_INCLUDE_DIR
^
../../gcc-4.8.2/gcc/config/linux.h:112:11: error: attempt to use poisoned “STANDARD_INCLUDE_DIR”
#define STANDARD_INCLUDE_DIR “/tools/include/“
^
In file included from ./tm.h:34:0,
from ../../gcc-4.8.2/gcc/genflags.c:26:
../../gcc-4.8.2/gcc/config/i386/linux.h:25:10: error: attempt to use poisoned “STANDARD_INCLUDE_DIR”
#undef STANDARD_INCLUDE_DIR
^
../../gcc-4.8.2/gcc/config/i386/linux.h:26:11: error: attempt to use poisoned “STANDARD_INCLUDE_DIR”
#define STANDARD_INCLUDE_DIR “/tools/include/“
^
make[2]: *** [build/genflags.o] Error 1
make[2]: Leaving directory /opt/mylinux/build/build-gcc/gcc' make[1]: *** [all-gcc] Error 2 make[1]: Leaving directory /opt/mylinux/build/build-gcc’
make: *** [all] Error 2

过五关,斩六将,一步一个困难,能想到的不能想到的乱七八糟的问题都被我遇到了,我该说我运气好呢还是运气差呢?
要说运气差,我是差到家了,明明是照着教程来的,别人没错,我就各种错!这不是打击我的学习积极性吗?我靠,百度,谷歌,各种论坛,各种教程,各种官网!寻寻觅觅,冷冷清清!众里寻他千百度,蓦然回首,啥也没有!中国研究Linux的人太少了!很多给出答案的人,也是一知半解,或者胡乱猜测!所谓具体问题具体分析,想在网上找到和自己一模一样的报错太难了!也许哪次运气好找到一个和自己完全相同的报错,马上兴奋地点开,却发现,是个未解决问题!我了个心洼凉洼凉的!到论坛发帖,基本不会有大神出现给你个解答,人家大神也忙啊!到群里发问,因为没人会或者没有大神看到,很快就被淹没了!找学长,就像我刚才所说,研究Linux的人太少,而且领域还不一定相同,他们也很难给出解答!找老师,学校里有专门教授Linux的老师吗?术业有专攻,老师也不一定能在第一时间给出解答。好好学英语,看看外国人给的教程,结果失望地发现,国外的网络雷锋要比我们少的多,想看教程?自己去官网吧!种种种种,以至于,我这种把搜索工具玩到出神入化的人都找不到答案!

Linux各版本比较

Linux的核心最早由Linus Benedict Torvalds在1991年开发出来。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。

Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以 Debian为代表。下面介绍一下各个发行版本的特点:
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。

LFS学习笔记

1、chmod -v a+wt $LFS/sources
chmod a+wt是将目录或文件的属性设置为1777,这样任何人都可以对其进行读写。
当一个目录被设置为”粘着位”(用chmod a+t),则该目录下的文件只能由
一、超级管理员删除
二、该目录的所有者删除
三、该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件
可以参考http://blog.sina.com.cn/s/blog_49302a850100gfrs.html

2、exec env -i HOME=$HOME TERM=$TERM PS1=’\u:\w$ ‘/bin/bash
exec的作用是执行一个可执行文件来替换掉当前进程(注意进程号并没有改变),env -i 就是以后面的环境变量来执行 /bin/bash。经过上面的整条命令,linux将用一个全新的shell来执行接下来的命令,这样可以去除掉很多环境变量。

3、set +h
该命令是关闭bash的 hash功能。Hash通常是一个有用的特性 —bash使用一个hash表来记录可执行文件的完整路径,以避免为寻找同一个可执行文件而反复搜索PATH里的目录。

编译gcc报错

在configure时报错如下:
……
checking for the correct version of gmp.h… yes
checking for the correct version of mpfr.h… yes
checking for the correct version of mpc.h… no
configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+.
Try the –with-gmp, –with-mpfr and/or –with-mpc options to specify
their locations. Source code for these libraries can be found at
their respective hosting sites as well as at
ftp://gcc.gnu.org/pub/gcc/infrastructure/. See also
http://gcc.gnu.org/install/prerequisites.html for additional info. If
you obtained GMP, MPFR and/or MPC from a vendor distribution package,
make sure that you have installed both the libraries and the header
files. They may be located in separate packages.

照着网上的解决办法,安装了gmp,mpfr,mpc后仍然报错,不过这次只是缺少一个mpc.h,很奇怪,为什么只有这个头文件没有安装成功呢?
输入sudo yum install mpc,会提示已经安装好了最新版mpc-0.22-4.fc19.i686。捜噶,可能是因为fedora19里的最新版还是太旧了。于是到ftp://ftp.gnu.org/gnu/mpc/下载了真正最新版,并且安装成功后,问题完美解决!

编译binutils报错

生成configure后,然后make,会报错如下:

make[3]: Leaving directory /opt/mylinux/build/binutils/bfd/po' make[3]: Entering directory /opt/mylinux/build/binutils/bfd/po’
make[3]: Nothing to be done for info'. make[3]: Leaving directory /opt/mylinux/build/binutils/bfd/po’
make[3]: Entering directory /opt/mylinux/build/binutils/bfd' make[3]: Nothing to be done for info-am’.
make[3]: Leaving directory /opt/mylinux/build/binutils/bfd' make[2]: *** [info-recursive] Error 1 make[2]: Leaving directory /opt/mylinux/build/binutils/bfd’
make[1]: *** [all-bfd] Error 2
make[1]: Leaving directory `/opt/mylinux/build/binutils’
make: *** [all] Error 2

试了网上各种方法无效,我了个去,这还怎么继续玩?都折腾了三天了都!
安装texinfo?安装了,无效。
在configure所在文件夹下编译?试过了,同样报错。
增加configure的参数?无效!
换一个binutils版本?试了三个版本,报错相同!

终极解决办法:见Binutils-2.23.2编译(官方文档 )
http://demo.voidking.com/reprint/linux/Binutils-2.23.2编译(官方文档).html