본문 바로가기
Programming/C++

리눅스 C++ 공유라이브러리 만들기

by 드로니뚜벅이 2022. 9. 6.

lddconfig 명령어

공유라이브러리를 만들기 위해서는 "ldconfig"라는 명령어를 이해해야 합니다.

ldconfig공유 라이브러리 관련 정보를 갱신하고 설정하는 명령어/etc/ld.so.conf 파일의 내용을 읽어 /etc/ld.so.cache 파일을 갱신할 때 주로 사용하게 됩니다.

예를 들어, libMyGame.so 라는 공유라이브러리를 만들어 /usr/local/lib 폴더에 복사할 경우 시스템에서 알아서 로딩하지 않습니다. 공유라이브러리를 추가했으니 관련 라이브러리를 사용하게 되면 호출해 달라고 알려줘야 합니다.

즉, ldconfig가 /etc/ld.so.conf 파일을 참고해서 등록되어 있는 해당 폴더의 라이브러리를 갱신하여 호출 시 호출해 줍니다.

오래 전 버전에서는 ld.so.conf 파일에 직접 공유파일이 있는 폴더명을 입력했는데 최근 버전에는 아래와 같이 변경되었습니다. (커널 2.6 버전 이후부터 /etc/ld.so.conf.d 폴더에 "xxx.conf" 파일 형식으로 설정하도록 변경되었습니다.)

$ cat /etc/ld.so.conf 
include /etc/ld.so.conf.d/*.conf

위 내용은 /etc/ld.so.conf.d/ 폴더에 있는 모든 .conf를 읽어서 파일에 기술된 폴더의 라이브러리를 로드합니다.

 

ldconfig options

Option Description
-p 현재 캐시에 저장되어 있는 공유 라이브러리 목록 정보를 출력함 (print)
-v 명령 실행과 관련된 자세한 정보를 출력함. (verbose)
-f /etc/ld.so.conf 파일 대신에 다른 환경 설정 파일을 지정할 때 사용함

 

ldconfig를 실행하려면 루트 권한을 가져야 하기 때문에 일반 사용자가 라이브러리를 공유하려면 다른 방법을 사용해야 합니다.

공유라이브러리를 자신의 홈 디렉토리내에 다운로드해서 "LD_LIBRARY_PATH" 환경 변수를 사용하시면 됩니다.

$ vi ~/.bashrc
# LD_LIBRARY_PATH에 공유라이브러리 폴더 지정
LD_LIBRARY_PATH=/home/mylib
export LD_LIBRARY_PATH

 

ldd 명령어

ldd 명령어를 사용하면 응용프로그램이나 명령어에서 사용하는 공유라이브러리를 확인 할 수 있습니다. 즉, 공유라이브러리 의존성을 검사해 줍니다.

$ which gcc
/usr/bin/gcc
$ ldd /usr/bin/gcc
	linux-vdso.so.1 (0x00007ffe377a7000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8b28243000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f8b28456000)
$ ldd `which gcc` # 위 명령어와 동일함

 

참고사이트

 

 

 

'Programming > C++' 카테고리의 다른 글

glibc 버전을 확인하려면...  (1) 2023.10.26
ARM 크로스 컴파일(Cross Compile)  (0) 2023.05.26
C/C++(gcc/g++) 컴파일러(Compiler) 설치  (0) 2022.04.28
GCC 버전과 C++ 버전 매칭  (0) 2022.04.22
ldconfig  (0) 2022.04.17