编译一个glibc库,说实在话,是一个很麻烦的事情。
因为libc库是GNU/Linux系统的一个基本构件。所以在编译的过程中有一些很tricky的操作。
下面是一个编译并安装glibc-2.6.1的bash脚本,它位于glibc2.6.1的源代码目录的父目录。
#!/bin/bash
#(0)chdir
[ test -x libc-bin ] || mkdir libc-bin
cd libc-bin/
#(1)clean
rm * -rf
#(2)configure
export LD_LIBRARY_PATH=
export PATH=/bin:/usr/bin
echo "CFLAGS += -fno-stack-protector" > configparms
../glibc-2.6.1/configure --prefix=/home/me/opt/glibc/2.6.1/
#(3)build
make
make install
几个注意事项:
1)LD_LIBRARY_PATH必须清空,否则configure会失败
2)PATH重置,预防在编译和安装过程中,系统命令调用失败
3)产生一个configparams的文件,其中包含CFLAGS += -fno-stack-protector,
否则,编译失败, 例如:
multiple definition of `__libc_multiple_libcs'
multiple definition of `_dl_addr_inside_object'
注意,好像编译glibc 2.5,2.7的时候,如果不如此设置configparam,编译也会失败
因为libc库是GNU/Linux系统的一个基本构件。所以在编译的过程中有一些很tricky的操作。
下面是一个编译并安装glibc-2.6.1的bash脚本,它位于glibc2.6.1的源代码目录的父目录。
#!/bin/bash
#(0)chdir
[ test -x libc-bin ] || mkdir libc-bin
cd libc-bin/
#(1)clean
rm * -rf
#(2)configure
export LD_LIBRARY_PATH=
export PATH=/bin:/usr/bin
echo "CFLAGS += -fno-stack-protector" > configparms
../glibc-2.6.1/configure --prefix=/home/me/opt/glibc/2.6.1/
#(3)build
make
make install
几个注意事项:
1)LD_LIBRARY_PATH必须清空,否则configure会失败
2)PATH重置,预防在编译和安装过程中,系统命令调用失败
3)产生一个configparams的文件,其中包含CFLAGS += -fno-stack-protector,
否则,编译失败, 例如:
multiple definition of `__libc_multiple_libcs'
multiple definition of `_dl_addr_inside_object'
注意,好像编译glibc 2.5,2.7的时候,如果不如此设置configparam,编译也会失败