본문 바로가기

개발/JavaScript

Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found

 

node js express 프로젝트에 패키지를 추가하고 서버에서 git pull 받아서 배포를 하려고 하는데 npm install을 하니 에러가 발생

검색했더니 패키지가 참조해야하는 CXXABI_1.3.8 이 파일이 없어서 그렇다고 한다.

 

원인은 원래 기존에 사용했던 게 bcrypt 3.0.6인데 이번에 ftp 패키지를 추가하면서 5.1.1로 수정됐다.

그래서 더 높은 버전의 CXXABI_1.3.8이 필요하게 됐다.

일단 bcrypt 버전을 다시 낮춰서 실행을 해봐야겠다. 안된다. 결국 ftp를 사용하려면 이 문제를 해결해야한다.

CXXABI는 gcc 라이브러리에 포함되어 있다. 현재 버전을 확인하고 gcc 버전을 올려 1.3.8을 얻어야 한다.

 

 

확인해보자

sudo find / -name libstdc++.so.6 | more

이 명령어로 확인하면 저 이름이 있는 디렉토리들을 찾아준다.

내 경우에는 아래 디렉토리만 나왔다.

 

/usr/lib64/libstdc++.so.6

 

안에 어떤 CXXABI 들이 있는지 확인해보자

$ strings /usr/lib64/libstdc++.so.6|grep '^CXXABI_'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1

 

이렇게 목록이 나오는데 1.3.8이 없다. centos7에는 gcc 4.8.5가 기본으로 들어가있다. 4.8.5는 1.3.7까지만 포함하나보다. 조금 아쉽다.

그래서 gcc 업데이트가 필요하다.

 

일단 챗지피티 말대로 scl을 사용하여 devtoolset-7을 설치해 활성화해봤는데 gcc 버전은 7로 올라갔지만 CXXABI_1.3.8은 어디에서도 찾을 수 없었다. 그리고 세션을 종료하면 scl 활성화가 꺼진다. 임시로 개발환경을 구성할 때 사용한다. 글로벌로 실행하여 계속 사용할 수도 있다.

 

어쨌든 CXXABI_1.3.8을 찾을 수 없으니 다른 방법을 시도해야한다.

 

패키지를 직접 설치하여 압축을 풀고 넣어주고 하는 방법이 있는데 지금 실서버에서 혼자 해보기엔 조금 부담스러워서 먼저 보고를 해야겠다.

 

 

 

참고

https://azdigi.com/blog/en/webserver-panel-en/directadmin-en/fix-the-error-cxxabi-1-3-9-not-found-on-centos-7-running-directadmin/

https://formulous.tistory.com/3