编译glibc的一些错误

编译本来并不复杂,都是configure & make & make install的老三步,问题在于遇到的各种错误。下面总结了一下遇到的错误们

1. LDLIBRARYPATH shouldn't contain the current directory
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.

出现这个错误的原因是由于环境变量的LDLIBRARYPATH中出现了当前目录。找了好久不知道是啥原因,因为不可能把这目录放在环境变量啊。后来发现,通常我们写环境变量都喜欢写:

export LD_LIBRARY_PATH = $LD_LIBRARY_PATH:foo/bar:hello/world:a/b 如果一开始LD_LIBRARY_PATH不存在的话,这个上面这串环境变量开头就是冒号,这就把当前文件夹包含进去了。一般来说我们挺需要这种效果,因为在编译的时候可以include某些东西,但是对于编译glibc来说这个是多余的。

最简单的解决方法就是 unset LD_LIBRARY_PATH,这能把这个环境变量直接干掉。

2. 安装目录prefix没指定的错误:
*** On GNU/Linux systems the GNU C Library should not be installed into
*** /usr/local since this might make your system totally unusable.
*** We strongly advise to use a different prefix.  For details read the FAQ.
*** If you really mean to do this, run configure again using the extra
*** parameter `--disable-sanity-checks'.

出现这个错误的原因在于,如果没指定prefix,则系统把这个程序装在/usr/local目录下。但是,c标准库要求必须安装在与根文件系统相同的分区中,否则不能用。但是/usr这个挂载点可能处在外部的分区。

解决方法就是指定prefix到/usr,这时候configure程序会自动把必须的内容装在/lib下(这个目录肯定与根目录同分区),扩展内容再装到/usr/lib下。

Friskit

继续阅读此作者的更多文章