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 |