编译安装glibc

今天早上本来打算研究一下dup2函数的实现,以验证文件描述符相关的模型,但是通过gdb调试起来后发现跳转到了“/sysdeps/unix/syscall-template.S”文件,很明显这是系统调用的模板文件,之前咱们研究过的fork函数还有一定的特殊性(是通过ARCH_FORK宏跳转到系统调用),所以今天就把glibc编译安装一下,尝尝咸淡。

1. ./configure

一般这类软件的安装,都是三步骤

  1. ./configure 根据机器的特点,对文件进行一些配置。
  2. ./make 编译、链接生成可执行文件。
  3. ./make install 把编译好的文件复制到指定的文件夹下,一般这一步需要权限。

好,先来进行第一步,直接执行“./configure”,结果出现以下错误:

configure: error: you must configure in a separate build directory

通过查找资料发现:“不能在glibc当前目录下运行configure”,所以将上述命令改为:

mkdir glibc-2.21-build
mkdir glibc-2.21-install 
cd glibc-2.21-build
../glibc-2.21/configure --prefix=../glibc-2.21-install
结果又出现如下错误:

configure: error: expected an absolute directory name for --prefix: ../glibc-2.21-install

把命令再改改,改成绝对地址再试试,出现错误如下:

*** These critical programs are missing or too old: gawk
*** Check the INSTALL file for required versions.

机器上没装gawk,先装上再试试:

*** These auxiliary programs are missing or incompatible versions: makeinfo
*** some features will be disabled.
*** Check the INSTALL file for required versions.
checking LD_LIBRARY_PATH variable... contains current directory
configure: error: 
*** LD_LIBRARY_PATH shouldn't contain the current directory when
*** building glibc. Please change the environment variable
*** and run configure again.

错误一个接着一个,第一个问题比较简单,不过注意此处要安装texinfo,直接安装makeinfo是没有的。

再来看第二个问题,这里比较尴尬,错误提示是LD_LIBRARY_PATH包含有当前文件夹。但我的qt是安装在home文件夹下的,所以解决这个问题当前有两套方案,第一是把LD_LIBRARY_PATH临时设为空;第二种方案是先把LD_LIBRARY_PATH永久设为空,安装完毕后再改回来。

先来试试第一种方案,命令如下:

export LD_LIBRARY_PATH=

好,问题得到解决。

2. 执行make

这一步没什么说的,直接执行make就行了,不过执行时间比较长。

就出现了一个错误,可能连错误都不算:

*** errlist.c count 134 inflated to GLIBC_2.12 count 135 (old errno.h?)

不影响make的执行,就先不管了。

3. 执行make install

以为执行到了这一步,幸福和快乐就应该是结局了,结果出现以下错误:

make[2]: *** No rule to make target 'libc.texinfo', needed by '/home/andywang/glibc-2.21-build/manual/libc.info'.  Stop.
make[1]: *** [manual/subdir_install] Error 2
make: *** [install] Error 2

又上网查了查,结果不得了啊,第二步貌似应该执行make all,好了把所有东西删了重来吧,试试make all结果如何。

make all还是出现上述警告,不过我看了一下,这部分是在装manual。其他需要的/bin、/include、/lib应该是都装好了(不过我也不确定)。

好,安装glibc的过程就先给大家分享到这里。



你可能感兴趣的:(gcc)