[Goal]
- Anaconda를 이용하다가 GLIBC version과 충돌이 되거나 없는 경우, 추가 및 변경하여 이를 해결할 수 있음
[Cause]
- Conda를 사용하다가 보면 GNU에서 만든 local lib version 이 없거나 다른 경우 해당 문제가 발생하는데 생각보다 이러한 문제가 생긴 경우가 많음
[How to solve?]
- [Step 1] 해당 버전이 있는지 check
$ strings /lib/x86_64-linux-gnu/libXXX.so.6 | grep GLIBC_
GLIBC_2.2.5
GLIBC_2.4
GLIBC_2.15
GLIBC_2.18
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_PRIVATE
# Current Version
$ ldd --version
ldd (Ubuntu GLIBC 2.27-3ubuntu1.6) 2.27
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
-
- 해당 저자의 경우 GLIBC_2.29 가 없고 2.27이기 때문에 해당 버전을 추가 설치 진행
- [Step 2] 해당 버전 local에 설치
$ wget -c https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
$ tar -zxvf glibc-2.29.tar.gz
$ cd glibc-2.29
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local/glibc-2.29/build --disable-sanity-checks
$ make
$ sudo make install
-
- [Error] `** These critical programs are missing or too old: gawk bison`
- 해당 library가 local에 설치가 되어 있지 않거나 version이 낮기 때문에 문제가 추가 발생
- gawk & bison 버전 찾기
- 해당 library가 local에 설치가 되어 있지 않거나 version이 낮기 때문에 문제가 추가 발생
- [Error] `** These critical programs are missing or too old: gawk bison`
$ ls -lah /usr/bin/gawk
ls: cannot access '/usr/bin/gawk': No such file or directory
$ ls -lah /usr/bin/bison
ls: cannot access '/usr/bin/bison': No such file or directory
$ bison --version
$ gawk --version
-
-
-
- 해당 lib 설치
-
-
$ sudo apt install gawk
$ sudo apt install bison
- [Step 3] 제대로 lib가 설치되었는지 확인
$ cd /usr/local/glibc-2.29/build/lib
$ ls | grep libm.so
# Results
libm.so
libm.so.6
- [Step 4] 해당 lib가 local GNU에 추가 및 soft linking (connection) 진행
# Copy libm.so.6 in /usr/local/glibc-2.29/build/lib
$ sudo cp /usr/local/glibc-2.29/build/lib/libm-2.29.so /lib/x86_64-linux-gnu/
# Make a forced soft connection
$ cd /lib/x86_64-linux-gnu/
$ sudo ln -sf libm-2.29.so libm.so.6
- [Step 5] 버전이 추가되었는지 최종 확인
$ strings /lib/x86_64-linux-gnu/libm.so.6 | grep GLIBC_
# Results
GLIBC_2.2.5
GLIBC_2.4
GLIBC_2.15
GLIBC_2.18
GLIBC_2.23
GLIBC_2.24
GLIBC_2.25
GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
GLIBC_PRIVATE
[Correct Results]
- ../configure --prefix=/usr/local/glibc-2.29/build --disable-sanity-checks 하면 올바르게 나온 결과의 마지막 부분이 다음과 같아야함
make
하면 올바르게 나온 결과의 마지막 부분이 다음과 같아야함
make install
하면 올바르게 나온 결과의 마지막 부분이 다음과 같아야함