반응형

2016/06/24 2

LIBPATH 환경 변수

Library 로드 오류 의뢰인이 다음과 같은 문제에 대하여 질문을 하였다. 그래서 몇개의 자료를 찾아 보고 나름 정리를 해 보기로 했다. Could not load program user: $> user Could not load program user: Dependent module libclntsh.a(shr.o) could not be loaded. Could not load module libclntsh.a(shr.o). System error: No such file or directory UNIX 에서 프로그램 실행시 위와 같은 오류메시지를 만났다면 libclntsh.a 라는 파일을 우선 점검해야 한다. 이 파일이 지정된 디렉토리에 실제로 존재하는 지 점검하고 존재한다면 READ권한이 있는지..

*.a 와 *.so 차이점

*.a 는 아카이브(Archive) 라는 뜻이다. 보통 우리가 object 파일들을 묶어서 library 로 제공하는 것과 동일하다. 이런 의미에서 *.so 도 동일한 성격이다. java 프로그램을 짜본 개발자라면 jar 파일을 연상하면 이해가 쉽다. C프로그램에 1차 컴파일하면 .o 파일이 생성된다. 소스 속에 main() 함수가 있다면 실행 바이너리로 컴파일 되겠지만 외부에서 호출할 수 있는 function 들로만 구성되어 있다면 .c 소스를 컴파일하면 .o 파일이 생성된다. 흡사 .java 를 컴파일 하면 .class 가 생성되는 것과 같다. java 는 원래 태생이 c 언어에서 시작되었기 때문에 그 구조가 비슷할 수 밖에 없다. 이제 본론으로 들어가서 *.a 와 *.so 의 차이점을 생각해 보면 ..

반응형