Wednesday, June 17, 2015

Glibc installation


The GNU C Library, commonly known as glibc, is the GNU Project's implementation of the C standard library. My environment required glibc (version 2.14) and it took a bit of fiddling to get it to work, so hopefully this will save you some time.

0. Glibc Installation Dependencies

Bash: sh
Binutils: ar, as, ld, ranlib, readelf
Diffutils: cmp
Fileutils: chmod, cp, install, ln, mknod, mv, mkdir, rm, touch
Gcc: cc, cc1, collect2, cpp, gcc
Grep: egrep, grep
Gzip: gzip
Make: make
Gawk: gawk
Sed: sed
Sh-utils: date, expr, hostname, pwd, uname
Texinfo: install-info, makeinfo
Textutils: cat, cut, sort, tr

 1. Download installation package
http://www.gnu.org/software/libc/ for all versions.
http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz for version 2.14.

2. Compile and install
To avoid disturb current environment, compile and install this version separately by configuring prefix.
 
[root@localhost ~]# tar xvf glibc-2.14.tar.gz
[root@localhost ~]# cd glibc-2.14
[root@localhost glibc-2.14]# mkdir build
[root@localhost glibc-2.14]# cd ./build
[root@localhost build]# ../configure --prefix=/opt/glibc-2.14
[root@localhost build]# make -j4
[root@localhost build]# make install
[root@localhost build]# export LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH

3. To check glibc versions installed
root@localhost:~/intel64/runtime/glibc$ strings libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_PRIVATE
 

4.  Compiling errors
Error: 
make[1]: *** No rule to make target `/mnt/lfs/sourcenew/glibc-build/Versions.all', needed by `/mnt/lfs/sourcenew/glibc-build/abi-versions.h'. Stop.
Solution:
sudo apt-get install gawk
sudo apt-get install texinfo

Error: 
make[2]: *** [/mnt/lfs/sources/glibc-build/misc/syslog.o] Error 1
Solution:
make clean
make -j2 CFLAGS="-U_FORTIFY_SOURCE -O2 -fno-stack-protector"
 
Error:  
/Downloads/glibc-2.14/build/elf/ldconfig: Can't open configuration file /opt/glibc-2.14/etc/ld.so.conf: No such file or directory 
Solution:
:/opt/glibc-2.14/etc$ sudo sh -c "echo '/usr/local/lib' >> ld.so.conf"  
:/opt/glibc-2.14/etc$ sudo sh -c "echo '/opt/lib' >> ld.so.conf" 


3 comments:

  1. Hi,
    I followed all the steps. (had the problem with ld.so.conf, but solution worked) And at the end I had no errors. Still when I want to run the my code it doesn't find the verson 2.14 and also "yum list glibc" doesn't find the version. Do you have some guess where to look for the error? thanks!

    ReplyDelete
  2. do I have to repeat all the steps after applying the solution.

    ReplyDelete