본문 바로가기
컴퓨터

[에러] ... cannot open shared object file: No such file or directory

by skyjwoo 2022. 7. 5.
728x90
반응형

colab에서 python으로 실행가능한 Unitex 프로그램을 가동시키려는 와중에 위와 같은 오류가 발생했다.

 

libunitex.so: cannot open shared object file: No such file or directory

 

해결책은 단순했다.

ldconfig

 

실행하니 에러가 사라졌다. 

 

구글에 검색했을 땐, 보통 라이브러리를 재설치 하면 해결된다고 한다. 근데 필자의 경우, pypi에 공유되는 라이브러리가 아닐 뿐더러, git에서 받은 파일을 토대로 setup.py로 직접 설치하는 방식인데다, 여러번 다시 해봐도 해결이 되지 않았는데, ldconfig 한 방에 해결되었다..

 

so 확장자는 찾아보니 'shared object'로 c, cpp 파일이 컴파일될 때 생성되는 object 파일의 또 다른 형태인 듯하다. 아래 링크에서 shared object 파일과 ldconfig에 대해 잘 설명하고 있다.

 

https://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html

 

Shared libraries with GCC on Linux - Cprogramming.com

Shared libraries with GCC on Linux By anduril462 Libraries are an indispensable tool for any programmer. They are pre-existing code that is compiled and ready for you to use. They often provide generic functionality, like linked lists or binary trees that

www.cprogramming.com

 

우선 shared library(또는 shared object)는 우리가 프로그램을 짤 때, 자주 쓰일 수 있는, 다른 프로그램에서 호출되어 쓰일 수 있는 모듈들이 저장되는 공유 라이브러리이다. 파이썬으로 치면, 우리가 from ~ import 할 때, 불러오는 라이브러리들 중, 각 파이썬에 site-packages 폴더에 있는 라이브러리들이 여기에 해당될 것이다. 

 

ldconfig는 C, C++에서 shared object 파일을 만들고, 이를 shared library의 형태로 다른 파일에서도 손쉽게 불러서 사용하려면, os에서 shared library가 위치한 주소에서 cache를 업데이트해주어야 하는데, 이를 수행해주는 명령어이다. 

 

따라서 위 오류 상황은 shared object 파일이 새로 생성되었는데, cache가 업데이트 되지 않아서 발생했던 오류로, ldconfig를 통해 해결 가능했던 것이다. 

 

* 혹시 오류가 있다면 댓글 남겨주세요.. ㅎㅎ

728x90
반응형

댓글