공유 라이브러리를 하드코딩 할수 있나요?

blueski의 이미지

전 지금까지 보통의 프로그램들을 컴파일 시키면 공유라이브러리의 위치가 하드코딩 되어 있는줄 알고 있었습니다.

그런데 이것 저것 실험하다 보니 아니더군요.
가령 어떤 프로그램에서 libc.so.6 을 사용한다면 해당 파일이 /lib 에 있는지 /usr/lib 에 있는지는 실행시에 결정이 되더군요.
가령 라이브러리 패스 라든지 ld.so.cache 등을 이용해서 말이죠.
(혹시 여기까지 저의 생각이 틀리면 지적해 주세요.)

그런데 이렇게 실행시에 결정되지 않고 직접 프로그램시에 공유라이브러리의 절대 경로를 포함한 위치가 실행화일내에 하드코딩 되도록 컴파일 시킬수 있나요?

(정적으로 컴파일 시키는것과는 다른 생각입니다.)

saxboy의 이미지

링커의 rpath 옵션을 찾아보세요. 또는 -R

dreampia의 이미지

소스 안에 이렇게 해 보세요..

putenv("LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/ccs/lib:/home/drempia/lib:.");

과 같은 부분을 넣어서 컴파일 해 보세요.
라이브러리 위치는 ld.so.conf ( ?? 맞나.. ㅡㅡ;; ) 에 넣을수도 있지만

LD_LIBRARY_PATH

라는 환경변수를 통해서 개별적으로 library의 위치를 지정할수 있습니다.

이 경우 주의할 점은 이미 process가 가동된 시점이므로, 가동시에 library가 필요하기 때문에, 이 process가 다시 fork(), execl()을 통해 process를 가동시키면 putenv에 의한 환경변수가 적용되서 가동이 될 것입니다.

>/dev/null 2>&1

blueski의 이미지

답변들 감사합니다.
이것저것 하느라고 인사가 늦었습니다.
specs 화일도 수정해 보고 삽질들 했습니다.
얼마전에야 -Wl, 을 알게 되었다는 엄청난 비극이...
역시 개념없는 왕초보의 한계는...TT.

(그런데 glibc 를 다른 디렉토리에 설치하여 이것저것 시험해 보는데 몇가지 문제들이 발생하네요.. 삽질 더 해봐야겠습니다.)

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.