리눅스 실행파일 배포할때 공유라이브러리도 같이 배포하려면 어떻게 해야하는지 ?

ukyoukyo의 이미지


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 만 해주면

다른 장비에서도 실행이 잘 될까요 ?

아니면 공유라이브러리를 별도로 배포하는 방법이 있는지요 ?

ihavnoth의 이미지

위의 모든 *.so.* 파일들을 복사만 해주고, ldconfig 만 해주면 -> 가능합니다.

root 권한이 없으시면 LD_LIBRARY_PATH를 사용하셔도 됩니다.

아니면 공유라이브러리를 별도로 배포하는 방법이 있는지요 ? ->
개인 용도가 아닌 정식 배포이면 라이브러리를 패키지에 포함하실려면
라이브러리별 라이센스를 확인하셔야 할껍니다.

없음

ukyoukyo의 이미지


[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)

빌드한 장비에서 파일검색을 해 보았는데요,

위 라이브러리 파일중에서 linux-vdso.so.1만 없고, 나머지는 전부 존재합니다.

linux-vdso.so.1 은 없는게 정상인건지요 ?


------------------ System programmer...^^

ihavnoth의 이미지

해당 파일은 커널이 각 프로세스마다 고정된 주소에 제공해주는 오브젝트입니다.

그래서 ldd로 보시면 바로 주소로(linux-vdso.so.1 => (0x00007fffaedff000)) 나옵니다.

없음

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.