要研究一下glibc相关的东西,当然得先知道咋安装。
目录
源码clone
首先,得把源码弄下来,直接去官网看看咋弄就行了:The GNU C Libraryhttps://www.gnu.org/software/libc/sources.html
克隆到本地,check进去就行,但注意要去stable版本,不要直接去master。
编译和安装
我当时安装的时候是2.34版本,写这篇的时候已经是2.35了,但都差不多。
clone下来的仓库的根目录有一个文件叫INSTALL,里面有如何编译的详解,但全是英文。想仔细了解的就直接去看那个文件,基本可以明白安装的步骤和一些原理。不想看大段英文,而且想简单粗暴安装的,可以继续往下读我这篇。
配置configure
和很多软件的安装类似,得先运行一个脚本叫configure,可以根据用户需求或喜好配置一下。
为了能保留一个完整的源码,不让编译的时候把它破坏了,很多软件(包括这个glibc)都希望你新开一个目录,专门负责存放编译时候生成的文件。这样即使除了什么问题,源码的这个目录也是纹丝未变,方便排除问题后重新开始。
glibc为了完全保护源码干净,在configure脚本中加入了判断。如果configure就在目前的工作目录(cwd)里,那么它不能被执行。也就是说,必须cd到一个别的目录,才能执行这个目录里的configure。因此永远也不可能“./configure”,而是只能“./some_directory_path/configure”。
如果你./configure了,会报error: you must configure in a separate build directory。
[@localhost glibc-2.34]$ ./configure
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for readelf... readelf
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ can link programs... no
configure: error: you must configure in a separate build directory
在我们的编译过程中,可以选择在glibc源码目录(clone下来一般叫glibc-2.xx)的上一层目录里建一个build目录,用来装编译生成的文件。
此时就准备“../glibc-2.xx/configure”了。但注意,此时build目录里最好不要有任何文件,不然可能会影响编译。
具体怎么配置呢?可以很复杂,但也可以很简单,就用一个选项--prefix就行了,这是选定你要安装在哪个目录。默认是--prefix=/usr/local,你要只是想随便安装一下,就改改这个选项,以防不小心把系统破坏了。
执行吧:
[@localhost glibc-2.34]$ cd ../build-glibc/
[@localhost build-glibc]$ ../glibc-2.34/configure --prefix=/mydir
编译并安装
啥也不用管,直接make就行了,-j加快点速度也行。
[@localhost build-glibc]$ make
编译完了就安装,这时候已经不用再选安装到哪个目录了,configure的时候选过了,而且如果这个目录不存在也是会帮你创建的。直接安装:
[@localhost build-glibc]$ make install
都跑完了就大功告成!