리눅스 실행파일 배포할때 공유라이브러리도 같이 배포하려면 어떻게 해야하는지 ?
글쓴이: ukyoukyo / 작성시간: 수, 2011/12/07 - 2:21오후
64비트 리눅스 시스템에서 아래와 같은 실행파일을 하나 만들었습니다.
( 공유 라이브러리를 사용해서 만들었습니다. )
[root@mini2:/root] # file prog prog: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
그리고, ldd 명령어로 사용하는 .so 파일들을 찾아보았습니다.
[root@mini2:/root] # ldd prog linux-vdso.so.1 => (0x00007fffaedff000) libncurses.so.5 => /lib64/libncurses.so.5 (0x00000037cc000000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000037b8e00000) libgomp.so.1 => /usr/lib64/libgomp.so.1 (0x00000037c6e00000) libc.so.6 => /lib64/libc.so.6 (0x00000037b8200000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000037c6600000) libdl.so.2 => /lib64/libdl.so.2 (0x00000037b8600000) /lib64/ld-linux-x86-64.so.2 (0x00000037b7a00000) librt.so.1 => /lib64/librt.so.1 (0x00000037b9600000)
제가 빌드한 장비가 아닌, 다른 장비에는 위 라이브러리가 모두 있는 상태가 아니라서
실행파일만 복사해서 실행하면 라이브러리 오류가 발생하네요.
위의 모든 *.so.* 파일들을 복사만 해주고, ldconfig 만 해주면
다른 장비에서도 실행이 잘 될까요 ?
아니면 공유라이브러리를 별도로 배포하는 방법이 있는지요 ?
Forums:
개인적으로 사용하는 간단한 테스트 유틸이면 static 빌드도 괜찮습니다.
위의 모든 *.so.* 파일들을 복사만 해주고, ldconfig 만 해주면 -> 가능합니다.
root 권한이 없으시면 LD_LIBRARY_PATH를 사용하셔도 됩니다.
아니면 공유라이브러리를 별도로 배포하는 방법이 있는지요 ? ->
개인 용도가 아닌 정식 배포이면 라이브러리를 패키지에 포함하실려면
라이브러리별 라이센스를 확인하셔야 할껍니다.
없음
답변 감사합니다. 한가지 더 질문이 있는데요...
빌드한 장비에서 파일검색을 해 보았는데요,
위 라이브러리 파일중에서 linux-vdso.so.1만 없고, 나머지는 전부 존재합니다.
linux-vdso.so.1 은 없는게 정상인건지요 ?
------------------ System programmer...^^
네 파일시스템에 존재하는 파일이 아닙니다.
해당 파일은 커널이 각 프로세스마다 고정된 주소에 제공해주는 오브젝트입니다.
그래서 ldd로 보시면 바로 주소로(linux-vdso.so.1 => (0x00007fffaedff000)) 나옵니다.
없음
댓글 달기