본문 바로가기

IT/Linux

동적 링크 라이브러리, ldconfig

2. 다운받은 폴더로 이동해 압축을 풀고 폴더로 들어간다.
tar -xf protobuf-2.6.0.tar.gz
cd protobuf-2.6.0

3. 아래 명령을 통해 빌드한다.
sudo ./configure

sudo make
sudo make check
sudo make install

4. 설치가 되었는지 확인한다.
protoc --version

5. 만약 위에서 오류가 발생하면 아래와 같이 해본다.
sudo ldconfig

 

ldconfig란?

 

ldconfig 는 동적 링크 라이브러리(.so)로 소스컴파일 한 실행 파일을 ldd[파일이름] 해보면 링크가 안되어 있을 시 경로를 못찾는 것들이 나오는데 이를 해결할 떄 사용한다.

이때 동적링크를 /etc/ld.so.conf 에 해당 라이브러리 경로를 삽입 후 ldconfig 하면 리눅스 커널이 /etc/ld.co.conf에 있는 라이브러리 경로를 링크시켜준다.

 

라이브러리란 시스템에서 프로그램을 직접 컴파일 할 때 프로그램에서 공통으로 사용하는 기능을 미리 모아 놓은 파일이다. 프로그램은 직접 하나 하나의 기능을 제작하는 대신, 이미 존재하는 라이브러리의 기능을 활용한다. 이것을 동적 링크 프로그램(dynamic linked program)이라 부른다. 또한 컴파일 할 때 자체 라이브러리를 사용하는 것을 정적 링크 프로그램 (statically linked program)이라 한다.


동적으로 링크된 실행파일은 공유 라이브러리에 매우 의존적이나, 대부분 현재 라이브러리 버전에는 국한되지는 않는다.
새로운 버전의 라이브러리를 설치한다면, 그것을 사용하기 위해, 틀별한 디렉토리에 설치하고 ldconfig를 실행하여 공유 라이브러리 캐시를 다시 설정해야 한다. ldconfig는 존재하는 파일을 조사하고, /etc/ld.so.cache 의 캐시 파일을 설정하면서 필요한 라이브러리를 적재하고 심볼릭 링크를 만드는 역할을 하는 것이다.

 

ldconfig는 runtime때 여러 위치에 존재하는 shared object, 쉽게말해 동적 라이브러리를 연결해주는 dynamic linker를 설정하는 command이다. 여기서 runtime dynamic linker는 /lib/ld.so 이고, 어떤 shared object가 필요한지는 실행파일이 알려준다.

ldd /bin/ls 을 실행해보면 ls가 동작하기위해 필요한 so들 목록이 나오고, 해당 so파일을 어느 경로에 있는걸 가져올껀지도 보여준다. 

/etc/ld.so.conf는 이 경로를 지정해주는 설정파일.

 

<Summary>

ldconfig: 자신이 사용중인 머신에 새로운 library를 설치한 후 머신이 인식하기 위한 dynamic linking table을 업데이트.

 

ldd: 컴파일을 한 프로그램에 link가 잘 되었는지 확인하기 위한 command. 

 

 

 

라이브러리 로딩 ld.so.conf

라이브러리 로딩 ld.so.conf 라이브러리란 프로그램들이 공통으로 사용할 수 있는 기능을 포함하고 있는 오브젝트 파일입니다. 동적 라이브러리는 프로그램을 컴파일하여 생성되는 바이너리에 포

julrams.tistory.com

protoc --version

'IT > Linux' 카테고리의 다른 글

pip & pip3 설치(install) 방법  (0) 2020.09.25
Library 경로 설정  (0) 2020.09.25
curl과 wget 차이점  (0) 2020.09.23
ls -al, 파일 정보 확인  (0) 2020.09.23
find 파일 찾기  (0) 2020.09.23